我读的地方,NHibernate的2.1支持的构造函数依赖注入它的entites。构造函数依赖注入与NHibernate 2.1和StructureMap
我该如何去配置StructureMap和NHibnerate 2.1来启动并运行?
我读的地方,NHibernate的2.1支持的构造函数依赖注入它的entites。构造函数依赖注入与NHibernate 2.1和StructureMap
我该如何去配置StructureMap和NHibnerate 2.1来启动并运行?
通过在所有实体(类等)中设置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?
我意识到这是一个老问题,但在情况下,它可能是有用的。
编辑:原帖链接不是有效的NHib 2.1,找到了更好的信息。
对于NHibernate 2.1,您可以创建一个拦截器并重写实例化方法,让您的容器在那里创建您的实例。 Here is an example
如果您想改为执行属性注入,您可以使用相同的技术,但是可以使用onLoad方法代替。
用这个得到任何地方?我也想用sm来注入依赖到我的实体中。 – 2010-02-26 07:24:11