0
假設我有從IClass繼承的ClassA和ClassB。現在我有一個LightInject容器和註冊ClassA的實例作爲C#LightInject - 如何用另一個替換容器中的實例
ClassA classA = new ClassA();
Helpers.Container.RegisterInstance(typeof(IClass), classA, "Class");
現在我想用CLASSB更換CLASSA作爲
ClassB classB = new ClassB();
Helpers.Container.RegisterInstance(typeof(IClass), classB, "Class");
這樣,當我嘗試在其他類來獲得一個實例可以得到classB而不是classA
但是,當我嘗試獲取實例時,我總是得到classA。我怎麼解決這個問題?謝謝。
更新:
我有一個IF語句來控制我要註冊哪個實例,如
if (name == "classA")
{
ClassA classA = new ClassA();
Helpers.Container.RegisterInstance(typeof(IClass), classA, "Class");
}
else
{
ClassB classB = new ClassB();
Helpers.Container.RegisterInstance(typeof(IClass), classB, "Class");
}
在我的代碼,第一輪,病情會是真的。因此,我將把classA註冊到容器中。第二輪,條件將是錯誤的。因此,我希望classB將被註冊到容器中。當我嘗試獲得實例時,我會在第一輪之後獲得classA,然後在第二輪中獲得classB。但是,目前的情況是,在兩輪比賽中,我獲得了A級。
您是否註釋掉了'Helpers.Container.RegisterInstance(typeof(IClass),classA,「Class」);'line? – mjwills
'if(true)'總是會進入第一個分支。什麼情況? – Nkosi
這只是一個例子。它可以是任何條件,如if(name ==「classA」) – Ben