Simple Injector pass hard coded values into constructor

痞子三分冷 提交于 2019-12-06 21:56:57

问题


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:


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.



来源:https://stackoverflow.com/questions/13747027/simple-injector-pass-hard-coded-values-into-constructor

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!