C#LightInject - 如何用另一个

时间:2017-06-17 12:53:08

标签: c# light-inject

假设我从Classlass继承了ClassA和ClassB。现在我有一个LightInject容器并将ClassA的实例注册为

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

(IClass) Helpers.Container.TryGetInstance(typeof(IClass), "Class");

但是,当我尝试获取实例时,我总是得到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。然而,目前的情况是,在两轮中,我得到了classA。

1 个答案:

答案 0 :(得分:0)

我是LightInject的作者。

可能是因为您在解决服务后尝试注册服务。没有一个完整的例子很难说。在LightInject仓库中创建一个问题,其中包含指向小型repro的链接,我们将帮助您解决问题