简单注入器将硬编码值传递到构造函数中



在简单注射器中,我可以执行以下操作:

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

我在这里做的是说,当找到IAuctionContext时,用这个新AuctionContext替换它。问题是,在调用 RegisterSingle 时,只会使用AuctionContext的单个实例。 我希望它能够像上面一样传入一个Uri参数,但没有单个实例,但每次都允许一个新实例。

这怎么可能?

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

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

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

当涉及到注入在应用程序过程中可能更改的值时,请阅读这篇关于注入运行时数据的文章。

最新更新