我已经使用命名实例为同一个接口注册了5个派生类。所有这些类都被注册为单例。
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
}
}
GetInstance
和GetNamedInstance
两种方法。每次调用GetInstance
都会返回最后注册的实例。而每次调用GetNamedInstance("Derived1")
都会返回相同的DerivedClass1
实例。 - PHeiberg