2012-06-27 14 views
7

Funkcja Autofac umożliwia łatwe rozwiązywanie wielu interfejsów do tego samego wystąpienia za pomocą funkcji .AsImplementedInterfaces() lub połączonych .As <>() wywołuje razem z .SingleInstance(). Czy można to również zrobić za pomocą TinyIoC? Odkryłem tylko, jak zarejestrować wiele implementacji tego samego interfejsu, ale nie ma sposobu na rejestrowanie rejestracji lub tym podobne.TinyIoC: Zarejestruj wiele interfejsów w jednym wystąpieniu.

Z mojego rozumienia jest to dość ważna cecha pojemnika IoC, prawda?

Odpowiedz

9

Jeśli mam zrozumienia poprawnie masz coś podobnego

public class MyThing : IFoo, IBar 
{ 
} 

i chcesz następujących wrócić tą samą instancję za siebie:

Resolve<IFoo>(); 
Resolve<IBar>(); 

Jeśli tak, to jest możliwe, ale to trochę brzydka:

container.Register<IFoo, MyThing>(); 
container.Register<IBar>((c,p) => c.Resolve<IFoo>() as IBar); 

Prawdopodobnie można by to dodać do ładniejszej składni, gdybyś chciał, ale to Delegat ctory jest faktycznie tym, co będzie działo się pod maską.

+0

Dzięki! Próbowałem znaleźć coś takiego, ale ostatniej nocy nie mogłem się zdecydować. – TeaDrivenDev

Powiązane problemy