我是IOC和StructureMap的新手,有一个n级应用程序,我正在研究如何设置接线(ForRequestedType ...),只想与有更多经验的人核实这是最好的方法!
我不希望我的UI应用程序对象直接引用我的持久层,因此无法在此UI项目中连接所有内容。
我现在通过在每个项目中定义一个Registry类来工作,根据需要连接项目中的类型。上面的层注册其类型,并调用下面的程序集并查找注册表,以便所有类型都通过hierrachy注册。
E.g。我有UI,服务,域和持久性库。在我的服务层中,注册表看起来像
Scan(x =>
{
x.Assembly("MyPersistenceProject");
x.LookForRegistries();
});
ForRequestedType<IService>().TheDefault.Is.OfConcreteType<MyService>();
这是在这样的设置中这样做的推荐方法吗?在这种情况下,有更好的方法和这些方法的优点/缺点是什么?
答案 0 :(得分:0)
听起来不错。
如果使用默认约定,例如为接口IOrderService提供默认实现OrderSevice,则可以通过使用StructureMap中的约定来减少连接。 WithDefaultConventions
是注册表中使用默认约定的方法。您还可以使用With
方法指定自己的约定并在注册表中注册它,请参阅StructureMap documentation