在简单注射器中,我可以执行以下操作:
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
方法可确保每次都返回一个新实例。
当涉及到注入在应用程序过程中可能更改的值时,请阅读这篇关于注入运行时数据的文章。