2014-11-12 2 views
0

Я использую Unity и хочу сделать следующее: я просто хочу передать тип значения в базовый конструктор.Зависимость конструктора инжекции неинтерфейса

Вот типичный InterfaceL

public interface Irepo 
{ 

void test(); 
} 

Здесь реализован класс, я хочу, чтобы иметь возможность также вводить неофициальный интерфейс в конструктор. Это возможно?

public class Repo : baseRepo, Irepo 
{ 
public Repo(IOther other, string username) : base(username) 
{} 
public void test(){} 
} 

Вот это unityconfig:

container.RegisterType<Irepo, Repo>(); 
container.RegisterType<IOther , Other>(); 

Ive пытался, но это говорит Repo не имеет параметр, который принимает строку. У кого-нибудь есть идеи?

container.RegisterType<Irepo, Repo>("user", new InjectionConstructor("user")); 

ответ

2

Если вы обеспечивая InjectionConstructor поставлять аргументы для конструктора, то вам нужно поставить их всех, даже если они зарегистрированы сами интерфейсы.

container.RegisterType<Irepo, Repo>("user", new InjectionConstructor(
    container.Resolve<IOther>(), 
    "user" 
)); 
+0

О, спасибо большое !!!!!! – Botonomous

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