создание WindsorContainer приводит к ошибке преобразования типов - PullRequest
0 голосов
/ 05 ноября 2010

Я пытаюсь найти следующую книгу: Pro ASP.NET MVC Framework от Стивена Сандерсона ...

Строка container = new WindsorContainer(xi); выдает эту ошибку:

Не удалось преобразовать 'DomainModel.Abstract.IPeopleRepository, DomainModel' в System.Type - возможно, тип не найден **

public WindsorControllerFactory()
{
    ConfigResource confres = new ConfigResource("castle");

    XmlInterpreter xi = new XmlInterpreter(confres);

    container = new WindsorContainer(xi);

    // Also register all the 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);
    }
}

Конфигурация замка:

  <castle>
    <components>
      <component id="PeopleRepository"
                 service="DomainModel.Abstract.IPeopleRepository, DomainModel"
                 type="DomainModel.Concrete.FakePeopleRepository, DomainModel" 
                 >

Как это можно исправить?

Ответы [ 2 ]

3 голосов
/ 05 ноября 2010

Книга Сандерсона устарела об интеграции MVC-Виндзор. Не кодируйте свою собственную (или книжную) фабрику контроллеров. Используйте взамен MVCContrib Windsor.

Кроме того, регистрация контроллеров на фабрике контроллеров является плохой практикой. Фабрика контроллеров предназначена для создания экземпляров контроллеров, а не для управления регистрацией контейнеров.

ОБНОВЛЕНИЕ: MvcContrib для ASP.NET MVC 3 удалил все фабрики контроллеров и объявил устаревшими все интеграции IoC.

1 голос
/ 05 ноября 2010

Я бы потерял пустой PeopleController конструктор

...