9

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

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

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

这怎么可能?

4

1 回答 1

18

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

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

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

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

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

于 2012-12-06T20:19:45.343 回答