Этот сайт не наркоманов. Это сайт программистов. Здесь курят мануал.

Добро пожаловать на Пыху!

Логин:
Пароль:
 

Нет прописки? Зарегистрируйся!

Новости

Пыха переехала на новый сервер, ура!

Краснодарское время: 25 Май, 2012, 06:29:46

Страниц: [1]
Печать
Автор Тема: C# Castle Windsor в MVC ControllerFactory  (Прочитано 990 раз)
0 Пользователей и 1 Гость смотрят эту тему.
kostyl    ↓ 
19 Декабрь, 2010, 05:44:45
НЕ ХУЕТА! ХУЕТА!

занедельный антипаттерн
Группа: Джедаи

Карма: 60
Сообщений: 3522
Сила слова: 1.7

Привет!!
Кто то юзал Castle Windsor для инъекций интерфейсов в конструкторы контроллеров в .NET MVC 2 ?
Короче кто юзал, я переопределяю  фабрику в Application_Start:
 
C#
ControllerBuilder.Current.SetControllerFactory(new WindsorControllerFactory());

Вот её код:
 
C#
   
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 фабрики. Я чё то не вдуплю,  толи это контейнер не пашет, толи хуй его знает чё блядь надо. Мож кто шарит?
« Последнее редактирование: 19 Декабрь, 2010, 05:44:45 от kostyl » Записан

качество жизни обратно пропорционально количеству лени
Frozzeg    ↓ 
19 Декабрь, 2010, 06:00:50 , спустя 16 минут 5 секунд
НЕ ХУЕТА! ХУЕТА!

Группа: Санитары

Карма: 92
Сообщений: 5499
Сила слова: 1.67

эта ошибка не относится к приведенному коду) у тебя не объявлен конструктор без параметров
Записан

Эксперт — это человек, который в узкой области допустил все возможные ошибки. © Нильс Бор.
Отложить на завтра — значит впасть в рекурсию. © Frozzeg
kostyl    ↓ 
19 Декабрь, 2010, 06:02:32 , спустя 1 минуту 42 секунды
НЕ ХУЕТА! ХУЕТА!

занедельный антипаттерн
Группа: Джедаи

Карма: 60
Сообщений: 3522
Сила слова: 1.7

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

качество жизни обратно пропорционально количеству лени
Frozzeg    ↓ 
19 Декабрь, 2010, 06:05:42 , спустя 3 минуты 10 секунд
НЕ ХУЕТА! ХУЕТА!

Группа: Санитары

Карма: 92
Сообщений: 5499
Сила слова: 1.67

C#
protected override IController GetControllerInstance(System.Web.Routing.RequestContext requestContext, Type controllerType)
        {
            return (IController)container.Resolve(controllerType);
        }
Записан

Эксперт — это человек, который в узкой области допустил все возможные ошибки. © Нильс Бор.
Отложить на завтра — значит впасть в рекурсию. © Frozzeg
kostyl    ↓ 
19 Декабрь, 2010, 06:12:48 , спустя 7 минут 6 секунд
НЕ ХУЕТА! ХУЕТА!

занедельный антипаттерн
Группа: Джедаи

Карма: 60
Сообщений: 3522
Сила слова: 1.7

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

качество жизни обратно пропорционально количеству лени
Страниц: [1]
Печать
 

Перейти в:  

Этот топик скрыли: adw0rd, Sinkler