考慮下面的代碼如何使用相同的界面注入兩個或多個依賴關係?
public interface ISomeInterface
{
void DoSomething();
}
public class A : ISomeInterface
{
public void DoSomething() { }
}
public class B : ISomeInterface
{
public void DoSomething() { }
}
然後一個使用2個接口類:
public class C : IC
{
protected ISomeInterface _dependency1;
protected ISomeInterface _dependency2;
public C (ISomeInterface dependency1, ISomeInterface dependency2)
{
_dependency1 = dependency1;
_dependency2 = dependency2;
}
}
我想在dependency2注入一個在依賴關係1和B。我知道我可以做這樣的事情:
builder.RegisterType<C>().As<IC>()
.WithParameter("dependency1", new A())
.WithParameter("dependency2", new B());
但我知道有一種更好的方式與Autofac做到這一點。
你試過一個數組或者IEnumerable嗎? –
可以工作,但想象一下,我有很多實現ISomeInterface的對象和大量的對象,只消耗一些對象。最糟糕的是,我將在未來實施一些。然後,在消費者中,我希望對ISomeInteefaces的數量保持透明。 whin ninject我可以在每個參數前面加一個名稱屬性,然後用該名稱進行綁定。我喜歡用Autofac做這樣的事情。 – Jordi