Simple Injector pass hard coded values into constr

2019-04-21 12:17发布

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?

1条回答
Deceive 欺骗
2楼-- · 2019-04-21 12:44

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.

查看更多
登录 后发表回答