C# LightInject - 如何用另一个替换容器中的实例
C# LightInject - How to replace an instance in a contain with another
假设我让 ClassA 和 ClassB 继承自 IClass。现在我有一个 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");
这样当我尝试在另一个 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.
我是 LightInject 的作者。
可能是因为您正在尝试在解决后注册服务。没有完整的例子很难说。在 LightInject 存储库中创建一个 link 到小型 repro 的问题,我们将帮助您
假设我让 ClassA 和 ClassB 继承自 IClass。现在我有一个 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");
这样当我尝试在另一个 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.
我是 LightInject 的作者。
可能是因为您正在尝试在解决后注册服务。没有完整的例子很难说。在 LightInject 存储库中创建一个 link 到小型 repro 的问题,我们将帮助您