我在使用 Ninject v1 和重置 StandardKernel 时遇到问题。我有一个静态对象,我用它来提供对内核的访问,就像这样
public static class ObjectFactory
{
private static IKernel _kernel = new StandardKernel(new CanceisModule());
// Resolve methods snipped for brevity
public static void Reset()
{
_kernel = null;
_kernel = new StandardKernel(new CanceisModule());
}
}
当我尝试在各种单元测试(我使用 MSTest)或健身装置中使用 ObjectFactory 时,问题就出现了。我总是在每个新的测试或夹具之前调用 ObjectFactory.Reset() 方法,但有时看起来重置实际上并没有工作,而是保留了原始绑定。我知道有一种方法可以在 Ninject v2 中重置 IKernel 对象,但我们还没有准备好采取行动(这对我们来说是一个相当重要的举措)。
有人可以就为什么会发生这种情况提供一些建议吗?我猜这与在不同跑步者的不同线程上执行测试的方式有关,但我该如何避免呢?
提前致谢