我已经使用命名实例为同一个接口注册了 5 个派生类。所有这些类都注册为 Singleton
For<IBaseInterface>().Singleton().Use<DerivedClass1>().Named("Derived1");
For<IBaseInterface>().Singleton().Use<DerivedClass2>().Named("Derived2");
For<IBaseInterface>().Singleton().Use<DerivedClass3>().Named("Derived3");
有一个静态类可以根据输入解析实例。但是,我观察到对 ObjectFactory.GetInstance 的每次调用都会在每个请求上返回新实例,而不是单例。应用程序中也没有线程。
知道为什么会这样吗?
编辑:
静态分辨率助手会导致任何问题吗?这就是我解决实例的方式。单例在示例应用程序中正常工作,但在我的机器上不起作用。
添加更多细节 - 该项目是 MVC Web API,我正在本地 IIS 上进行测试。我很肯定应用程序中没有用户创建的线程。
public static class Resolver
{
public static IBaseInterface GetHelper(string inputParam)
{
if inputParam is "Case1"
return ObjectFactory.GetInstance<IBaseInterface>("Derived1")
//Similarly for other instances
}
}