Mam zarejestrowanych 5 klas pochodnych dla tego samego interfejsu przy użyciu nazwanych wystąpień. Wszystkie te klasy są zarejestrowane jako SingletonMapa struktury w Singleton zwraca wiele instancji
For<IBaseInterface>().Singleton().Use<DerivedClass1>().Named("Derived1");
For<IBaseInterface>().Singleton().Use<DerivedClass2>().Named("Derived2");
For<IBaseInterface>().Singleton().Use<DerivedClass3>().Named("Derived3");
Istnieje klasa statyczna, która rozwiązuje wystąpienie na podstawie danych wejściowych. Jednak zauważyłem, że każde wywołanie ObjectFactory.GetInstance zwraca nowe wystąpienia na każde żądanie zamiast Singleton. W aplikacji również nie ma wątków.
Każdy pomysł, dlaczego tak się dzieje?
Edytuj:
Czy pomocniczy asystent rozdzielczości powoduje problemy? W ten sposób rozwiązuję instancję. Singleton działa poprawnie w przykładowej aplikacji, ale nie działa na moim komputerze.
Aby dodać więcej szczegółów - projekt to MVC Web API i testuję na lokalnych usługach IIS. Jestem pewien, że w aplikacji nie ma nic wspólnego z użytkownikami.
public static class Resolver
{
public static IBaseInterface GetHelper(string inputParam)
{
if inputParam is "Case1"
return ObjectFactory.GetInstance<IBaseInterface>("Derived1")
//Similarly for other instances
}
}
Nie mogę powtórzyć twoich wyników. Przeprowadziłem twoje rejestracje i wypróbowałem oba z 'GetInstance' i' GetNamedInstance'. 'GetInstance' zwraca za każdym razem ostatnią zarejestrowaną instancję. 'GetNamedInstance (" Derived1 ")' zwraca za każdym razem to samo wystąpienie 'DerivedClass1'. – PHeiberg
Tak, proszę napisać przykład, który odtwarza problem. – neontapir
Witaj PHeiberg i neontapir, próbowałem utworzyć prosty przykład kodu i działa w nim dobrze. Ale w mojej aplikacji to nie działa. Dodałem trochę więcej szczegółów na temat wywoływania instancji. Czy możesz to sprawdzić. Dzięki – ganeshran