2012-12-06 11 views
8

W Simple Injector mogę wykonać następujące czynności:Proste Injector przechodzą zakodowanego wartości do konstruktora

container.RegisterSingle<IAuctionContext>(() => new AuctionContext(
    new Uri("http://localhost:60001/AuctionDataService.svc/"))); 

Co robię tutaj mówi, że kiedy IAuctionContext zostanie znaleziony, zastąpić go nowym AuctionContext. Problem polega na tym, że przy wywołaniu RegisterSingle zostanie użyte tylko jedno wystąpienie AuctionContext. Chciałbym móc przekazać parametr jak powyżej, ale nie mieć pojedynczej instancji, ale za każdym razem zezwalać na nową instancję.

Jak to jest możliwe?

+0

Edytowałem twoje pytanie i usunąłem twój podpis na http://meta.stackexchange.com/questions/2950/should-hi-thanks-taglines-and-salutations-be-removed-from-posts. Proszę powstrzymać się od używania podpisów. =) –

+0

Będę o tym pamiętać następnym razem, dzięki. –

Odpowiedz

18

Wartość, którą próbujesz wstrzyknąć, jest prostą, zakodowaną wartością. Na stałych wartościach, takich jak stałe wartości i wartości konfiguracji, wystarczy użyć metody Register:

var uri = new Uri("http://localhost:60001/AuctionDataService.svc/"); 

container.Register<IAuctionContext>(() => new AuctionContext(uri)); 

Sposób Register zapewnia nowy przypadek jest zwracana za każdym razem.

Jeśli chodzi o wstrzykiwanie wartości, które mogą ulec zmianie w trakcie aplikacji, przeczytaj this article about injecting runtime data.