使用NHibernate 2.1和StructureMap进行构造函数依赖注入

时间:2009-07-24 09:44:13

标签: nhibernate structuremap

我已经读过NHibernate 2.1支持构造函数依赖注入的地方。

如何配置StructureMap和NHibnerate 2.1以启动并运行?

2 个答案:

答案 0 :(得分:2)

我意识到这是一个老问题,但万一它可能有用。

编辑:原始发布的链接对NHib 2.1无效,找到了更好的信息。

对于NHibernate 2.1,您可以创建一个Interceptor并覆盖Instantiate方法,让容器在那里创建实例。 Here is an example

如果您想要进行属性注入,则可以使用相同的技术,而是在onLoad方法中完成工作。

答案 1 :(得分:0)

通过在所有实体(类等)中设置StructureMap,然后使用每个实例的接口作为类的构造函数的签名...当您在其构造函数StructureMap中实例化具有依赖项的类时会为你自动注射它!

[PluginFamily("Default")]
public interface IWidget1

[Pluggable("Default")]
public class Widget1 : IWidget1

[PluginFamily("Default")]
public interface IAnotherWidget

[Pluggable("Default")]
public class AnotherWidget : IAnotherWidget
{
    public AnotherWidget(IWidget widget)
    {
       ...
    }
}

IAnotherWidget _anotherWidget = ObjectFactory.GetInstance<IAnotherWidget>();

类似的东西!

这也许有用:Can I replace the call to Activator.CreateInstance() in NHibernate?

而且:http://devlicio.us/blogs/billy_mccafferty/archive/2007/02/05/inject-di-container-into-domain-objects-with-nhibernate.aspx