명명 된 인스턴스를 사용하여 동일한 인터페이스에 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를 호출 할 때마다 Singleton 대신 모든 요청에서 새 인스턴스를 반환한다는 사실을 확인했습니다. 응용 프로그램에는 스레드가 없습니다.
왜 그런지 알고 싶습니다.
편집 :
정적 해결 도우미로 인해 문제가 발생합니까? 이것은 인스턴스를 해결하는 방법입니다. 싱글 톤은 샘플 애플리케이션에서 제대로 작동하지만 내 컴퓨터에서는 작동하지 않습니다.
자세한 내용을 추가하려면 프로젝트가 MVC 웹 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
예, 문제를 재현하는 예제를 게시하십시오. – neontapir
PHeiberg 및 neontapir 님, 간단한 코드 샘플을 만들려고했는데 제대로 작동합니다. 하지만 내 응용 프로그램에서는 작동하지 않습니다. 인스턴스가 호출되는 방법에 대한 자세한 내용을 추가했습니다. 그걸 확인해 주시겠습니까? 감사합니다 – ganeshran