5

我在某处读到 NHibernate 2.1 支持它的实体的构造函数依赖注入。

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

4

2 回答 2

2

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

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

对于 NHibernate 2.1,您可以创建一个 Interceptor 并覆盖 Instantiate 方法,并让您的容器在那里创建您的实例。 这是一个例子

如果您想改为执行属性注入,则可以使用相同的技术,但改为在 onLoad 方法中执行您的工作。

于 2010-06-15T18:54:56.980 回答
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>();

类似的东西!

这也可能有用:我可以在 NHibernate 中替换对 Activator.CreateInstance() 的调用吗?

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

于 2009-07-24T09:51:20.870 回答