ФорумПрограммированиеБольше языковC/C++ и C# → C# Castle Windsor в MVC ControllerFactory

C# Castle Windsor в MVC ControllerFactory

  • kostyl

    Сообщения: 5210 Репутация: N Группа: Джедаи

    Spritz Дек. 19, 2010, 5:44 п.п.

    Привет!!
    Кто то юзал Castle Windsor для инъекций интерфейсов в конструкторы контроллеров в .NET MVC 2 ?
    Короче кто юзал, я переопределяю  фабрику в Application_Start:

     ControllerBuilder.Current.SetControllerFactory(new WindsorControllerFactory()); 


    Вот её код:

        
    public class WindsorControllerFactory: DefaultControllerFactory
       {
           WindsorContainer container;

           public WindsorControllerFactory()
           {
               // Create new container instance from web.config
               container = new WindsorContainer(new XmlInterpreter(new ConfigResource("castle")));
               // Set all controller types as Transient
               var controllerTypes = from t in Assembly.GetExecutingAssembly().GetTypes()
                                     where typeof(IController).IsAssignableFrom(t)
                                     select t;
               foreach (Type t in controllerTypes)
               {
                   container.AddComponentLifeStyle(t.FullName, t, LifestyleType.Transient);
               }
           }

           protected IController GetControllerInstance(Type controllerType)
           {
               return (IController)container.Resolve(controllerType);
           }
       }


    Но блин  пишет сука мне No parameterless constructor defined for this object. Даже не доходит в GetControllerInstance фабрики. Я чё то не вдуплю,  толи это контейнер не пашет, толи хуй его знает чё блядь надо. Мож кто шарит?
  • Frozzeg

    Сообщения: 5641 Репутация: N Группа: Джедаи

    Spritz Дек. 19, 2010, 6 п.п., спустя 16 минут 5 секунд

    эта ошибка не относится к приведенному коду) у тебя не объявлен конструктор без параметров
    You can be anything you want to be. Just turn yourself into anything you think that you could ever be.
  • kostyl

    Сообщения: 5210 Репутация: N Группа: Джедаи

    Spritz Дек. 19, 2010, 6:02 п.п., спустя 1 минуту 42 секунды

    мне кажеться этот метод не работает, потому что во второй версии MVC его нет…
    protected IController GetControllerInstance(Type controllerType)
  • Frozzeg

    Сообщения: 5641 Репутация: N Группа: Джедаи

    Spritz Дек. 19, 2010, 6:05 п.п., спустя 3 минуты 10 секунд

    protected override IController GetControllerInstance(System.Web.Routing.RequestContext requestContext, Type controllerType)
    {
    return (IController)container.Resolve(controllerType);
    }
    You can be anything you want to be. Just turn yourself into anything you think that you could ever be.
  • kostyl

    Сообщения: 5210 Репутация: N Группа: Джедаи

    Spritz Дек. 19, 2010, 6:12 п.п., спустя 7 минут 6 секунд

    Frozzeg, ага, точно… Чё то я реально затупил… с этими устаревшими примерами пока всё разберёшь… еще конфиг поправить надо было…

Пожалуйста, авторизуйтесь, чтобы написать комментарий!