以前可能会问过这个问题,但在搜索SO时我没有找到任何东西。
使用依赖注入时,您通常如何处理列表,网络凭据等类型。
在我的一个服务构造函数中,我有:
_itemsCheckedForRelations = new List<Guid>();
_reportManagementService.Credentials = new NetworkCredential([...]);
您是否会将这些重构为自定义工厂类/接口并注入或执行此操作?
我不太确定如何处理这些类型的对象创建。
答案 0 :(得分:3)
如果您只需要阅读列表,就可以轻松地将List<Guid>
替换为IList<Guid>
或ICollection<Guid>
- 甚至IEnumerable<Guid>
。
对于尚未实现接口或具有虚拟成员的其他BCL类型,您需要自己提取接口。但是,在执行此操作时,您应该注意 Leaky Abstractions 。
答案 1 :(得分:0)
你可以两条路线;首先,正如您所说,为它们创建一个包装器并注入它。但是,这取决于您希望如何填充正在包装的对象的状态。这个案子不是我个人所做的。查看关于动态parmaters的Krzysztof Kozmic博客:
Castle Windsor dynamic parameters
希望这有帮助