【发布时间】:2012-02-08 14:10:19
【问题描述】:
如何将参数传递给解析器以创建对象?
我有一个要传递给数据服务对象的 UoW 对象,我希望能够确保以特定顺序创建的数据服务对象是使用一个 UoW 对象创建的
例如
using (var context = Resolver.GetService<IUoW>())
{
var dataService1 = Resolver.GetService<IDataService1>();
var dataService2 = Resolver.GetService<IDataService2>();
// do some stuff
context.Commit();
}
选项 1,将 IUoW 传递给 Resolver.GetService 调用 - 不了解 IDataServiceX 实现的构造函数
选项 2,为 IUoW 向 IDataServiceX 添加一个属性 - 不设置很容易,程序员怎么知道需要设置这个属性
【问题讨论】:
-
要具体回答选项 2 中的问题,一种方法是让 IDataServiceN 的实现检查属性是否已设置并引发对开发人员友好的异常。虽然不是最好的。
-
是的,我真的想要一个已配置的解决方案或编译时异常
标签: ioc-container service-locator