Reputation: 46750
In Simple Injector I can do the following:
container.RegisterSingle<IAuctionContext>(() => new AuctionContext(
new Uri("http://localhost:60001/AuctionDataService.svc/")));
What I am doing here is saying that when IAuctionContext
is found, replace it with this new AuctionContext
. The problem is that with the call to RegisterSingle
, only a single instance of AuctionContext
will be used. What I'd like it to be able to pass in a Uri
parameter as above but not have the single instance but allow a new instance each time.
How is this possible?
Upvotes: 9
Views: 5498
Reputation: 172646
The value you are trying to inject is a simple hard-coded value. For constant values like hard-coded values and configuration values, just use the Register
method:
var uri = new Uri("http://localhost:60001/AuctionDataService.svc/");
container.Register<IAuctionContext>(() => new AuctionContext(uri));
The Register
method ensures a new instance is returned each time.
When it comes to injecting values that could change during the course of the application, please read this article about injecting runtime data.
Upvotes: 18