2

Я использую SimpleInjector в MVC с этим кодомКак настроить LightInject в ASP.NET MVC?

public static class SimpleInjectorInitializer 
{ 
    public static void Initialize() 
    { 
     var container = new Container(); 
     InitializeContainer(container); 
     container.RegisterMvcControllers(Assembly.GetExecutingAssembly()); 
     container.Verify(); 
     DependencyResolver.SetResolver(new SimpleInjectorDependencyResolver(container)); 
    } 

    private static void InitializeContainer(Container container) 
    { 
     container.Register<IPersonRepository, PersonEntityRepository>(); 
    } 
} 

, но теперь я хочу, чтобы проверить LightInject IoC в моем приложении MVC, но как?

Я написал этот код

[assembly: WebActivator.PostApplicationStartMethod(typeof(LightInjectInitializer), "InitializeLI")] 

public static class LightInjectInitializer 
{ 
    public static void InitializeLI() 
    { 
     var container = new ServiceContainer();    
     InitializeContainer(container); 
     container.RegisterControllers(Assembly.GetExecutingAssembly()); 
     container.EnableMvc(); 
    } 

    private static void InitializeContainer(ServiceContainer container) 
    { 
     container.Register(typeof(PersonEntityRepository), typeof(IPersonRepository), new PerScopeLifetime()); 

    } 
} 

enter image description here

но показать мне эту ошибку

No parameterless constructor defined for this object. 

Может кто-нибудь помочь мне для написания эквивалентного кода, работающие в MVC?

Пример кода:Download

+0

Любая конкретная причина, вы переключаетесь на Light Inject? Любая особенность, в которой вы отсутствуете в Simple Injector? – Steven

+0

см. Сравнительный тест http://www.palmmedia.de/blog/2011/8/30/ioc-container-benchmark-performance-comparison –

+1

Я знаком с этим эталоном. Это ваша единственная причина в производительности? Обратите внимание, что LightInject просто немного быстрее, чем простой инжектор. Вы не увидите измеримой разницы в производительности в любом реальном приложении. – Steven

ответ

4

Я являюсь автором LightInject и хотел бы помочь вам.

Этот статический метод инициализации? Откуда его зовут. Причина, по которой вы получаете эту ошибку, вероятно, потому, что код инициализации не выполнялся.

Если вам нужна дополнительная помощь, было бы полезно увидеть, что у вас есть в global.asax.cs.

Эта страница также содержит информацию о том, как ее установить.

http://www.lightinject.net/#mvc

+0

[сборка: WebActivator.PostApplicationStartMethod (typeof (LightInjectInitializer), "InitializeLI")] - Я добавил этот атрибут и использовал лунную архитектуру –

+0

Можете ли вы проверить, выполняется ли этот метод, установив точку останова ? – seesharper

+0

Да, я могу, см. Мое сообщение снова, Если вы хотите, я могу загрузить свой образец –

0

Пожалуйста, измените контроллер регистрации линию:

container.RegisterControllers(typeof(MVCApplicationNamespace.Controllers.HomeController).Assembly); 
Смежные вопросы