0
如果我有在相同的接口類型一類兩個屬性,我想注入兩種不同類型的conrete每個我怎麼做,與autofac或者與屬性或構造注入。Autofac兩個屬性與同類型
例如。
class A : IA
{
public IB PropertyB { get; set; }
public IB PropertyC { get; set; }
public A(IB b, IB c)
{
PropertyB = b;
PropertyC = c;
}
public void PrintB()
{
PropertyB.Print();
}
public void PrintC()
{
PropertyC.Print();
}
}
我已經試過,但當然,我只是得到一個C注入到這兩個屬性
var builder = new ContainerBuilder();
builder.RegisterType<B>().As<IB>();
builder.RegisterType<C>().As<IB>();
builder.RegisterType<A>().As<IA>();
var container = builder.Build();
var a = container.Resolve<IA>();
或者這具有相同的結果:
builder.RegisterType<B>().As<IB>();
builder.RegisterType<C>().As<IB>();
builder.RegisterType<A>().As<IA>().PropertiesAutowired();
var container = builder.Build();
var a = container.Resolve<IA>();
有沒有一種方法,我可以告訴autofac我想PropertyB中的B和PropertyC中的C?
嗨感謝您的解決方案,但是當我嘗試這個,我得到一個ComponentNotRegisteredException錯誤時autofac試圖解決B或C contrete類型。 –
您必須使用Autofac明確註冊具體類型。 – Steven