2013-11-14 4 views
-1

В классе bootstrapper моего WebApi я пытаюсь зарегистрировать новый экземпляр класса под названием «Фасад» на основе его типа интерфейса.Исключение конструктора параметра Unity

В этом типе, который требуется зарегистрировать, требуется новый экземпляр «CRUDOperator», который также имеет новый экземпляр «Adapter» в своем конструкторе. Это то, что я пытаюсь сделать возможным? В настоящее время я просто получаю исключение, что параметры перегрузки неверны.

public static class Bootstrapper 
{ 
    public static void Initialise() 
    { 
     var container = BuildUnityContainer(); 

     GlobalConfiguration.Configuration.DependencyResolver = new Unity.WebApi.UnityDependencyResolver(container); 
    } 

    private static IUnityContainer BuildUnityContainer() 
    { 
     var container = new UnityContainer(); 

     *****ERROR***** 
     container.RegisterType<IFacade,Facade>(new CRUDOperatorSelector(new Adapter())); 

     return container; 
    } 
} 

ответ

0

Единство способно разрешить конкретные типы без регистрации их, так что если в вашем случае типы CRUDOperatorSelector и адаптер конкретные типы (и я предполагаю, что они есть) вы просто должны зарегистрировать тип Facade как реализация IFacade и решить эту проблему. Затем Unity создаст экземпляр каждой зависимости и передаст его конструктору Facade. Если некоторые из этих типов реализуют абстракцию (интерфейс или абстрактный класс), зарегистрируйте их также.

+0

Да, вы правы, что это конкретные реализации. так что это так же просто, как создать новый контейнер единства ..... зарегистрировать тип, как показано .... container.RegisterType (); .... и нет необходимости пытаться вводить что-либо в этот зарегистрированный тип? – user1352057

+0

Да, это должно быть так просто;) Дополнительный вопрос - какое время жизни вам нужно для этих типов - по умолчанию Вы получаете новый экземпляр этих типов каждый раз, когда единство должно будет их разрешить - например, если есть другие типы принимая CRUDOperatorSelector и Adapter в своем конструкторе, каждый из них получит отдельный новый экземпляр - надеюсь, вы знаете, что я имею в виду здесь;) –

+0

@Prezemek Walendowski. Благодаря! Так оно и было, похоже, я собирался уйти в глубь! Можете ли вы ответить на вопрос, пожалуйста, чтобы я мог правильно выбрать ваш ответ. – user1352057

Смежные вопросы