StructureMap接线 - 理智检查

时间:2010-01-29 06:14:23

标签: dependency-injection inversion-of-control structuremap ioc-container

我是IOC和StructureMap的新手,有一个n级应用程序,我正在研究如何设置接线(ForRequestedType ...),只想与有更多经验的人核实这是最好的方法!

我不希望我的UI应用程序对象直接引用我的持久层,因此无法在此UI项目中连接所有内容。

我现在通过在每个项目中定义一个Registry类来工作,根据需要连接项目中的类型。上面的层注册其类型,并调用下面的程序集并查找注册表,以便所有类型都通过hierrachy注册。

E.g。我有UI,服务,域和持久性库。在我的服务层中,注册表看起来像

        Scan(x =>
        {
            x.Assembly("MyPersistenceProject");
            x.LookForRegistries();
        });

        ForRequestedType<IService>().TheDefault.Is.OfConcreteType<MyService>();

这是在这样的设置中这样做的推荐方法吗?在这种情况下,有更好的方法和这些方法的优点/缺点是什么?

1 个答案:

答案 0 :(得分:0)

听起来不错。

如果使用默认约定,例如为接口IOrderService提供默认实现OrderSevice,则可以通过使用StructureMap中的约定来减少连接。 WithDefaultConventions是注册表中使用默认约定的方法。您还可以使用With方法指定自己的约定并在注册表中注册它,请参阅StructureMap documentation