Simple Injector将硬编码值传递给构造函数

时间:2012-12-06 15:33:57

标签: c# dependency-injection ioc-container simple-injector

Simple Injector我可以执行以下操作:

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

我在这里做的是说找到IAuctionContext后,将其替换为新的AuctionContext。问题是,通过调用RegisterSingle,只会使用AuctionContext的单个实例。我希望能够传递如上所述的Uri参数但不具有单个实例但每次都允许新实例。

这怎么可能?

1 个答案:

答案 0 :(得分:18)

您尝试注入的值是一个简单的硬编码值。对于硬编码值和配置值等常量值,只需使用Register方法:

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

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

Register方法确保每次都返回一个新实例。

在注入应用过程中可能发生变化的值时,请阅读this article about injecting runtime data