我有一個接口作爲構造函數參數的類。這個接口有兩個實現,我想根據變量來決定在運行時使用什麼實現。Autofac - 動態解析組件參數
問題是,上面的類是深入的對象heirarchy由Autofac解決,所以我不能傳遞參數。
像下面這樣的興趣是我想要實現的。
public interface IInterface1 {}
public interface IInterface2 {}
public class Class1 : IInterface2
{
public Class1(IInterface1 interface1)
{
}
}
public class Class2
{
public Class2(IInterface2 interface2)
{
}
}
public class Class3
{
public void GetClass2Instance(string interface1ImplementationToChoose)
{
// want to change which implementation of IInterface1 is resolved based on the interface1ImplementationToChoose variable
var class2 = container.Resolve<Class2>();
}
}
任何想法?
UPDATE:
爲了澄清,這是用於由工作正常現有應用程序的現有對象分層結構。而且,對象模型比本例中顯示的要大得多。因此,我並不想將工廠傳遞給對象圖中的每個構造函數,以供圖中深層的類使用。
有沒有辦法讓IInterface1的不同實現傳入Class1,而Class2不知道任何事情呢?
感謝
你說「這個接口有兩種實現..」,但你的示例並沒有很好地顯示出來。你能否詳細說明,然後我會相應地更新我的答案。 – 2010-08-05 10:25:27