Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/331.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用NHibernate 2.1和StructureMap的构造函数依赖项注入_Nhibernate_Structuremap - Fatal编程技术网

使用NHibernate 2.1和StructureMap的构造函数依赖项注入

使用NHibernate 2.1和StructureMap的构造函数依赖项注入,nhibernate,structuremap,Nhibernate,Structuremap,我在某个地方读到NHibernate2.1支持其实体的构造函数依赖注入 如何配置StructureMap和NHiGenerate 2.1以使其启动并运行?通过在所有实体(类等)中设置StructureMap然后使用每个类的接口作为类构造函数的签名…当您实例化在其构造函数StructureMap中具有依赖项的类时,它将自动为您注入它 [PluginFamily("Default")] public interface IWidget1 [Pluggable("Default")] public

我在某个地方读到NHibernate2.1支持其实体的构造函数依赖注入


如何配置StructureMap和NHiGenerate 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>();
[PluginFamily(“默认”)]
公共接口IWidget1
[可插拔(“默认”)]
公共类Widget1:IWidget1
[PluginFamily(“默认”)]
公共接口小部件
[可插拔(“默认”)]
公共类AnotherWidget:IAnotherWidget
{
公共另一个小部件(IWidget小部件)
{
...
}
}
IAnotherWidget\u anotherWidget=ObjectFactory.GetInstance();
差不多吧

这也可能有用:


这是:

我意识到这是一个老问题,但万一有用的话

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

对于NHibernate2.1,您可以创建一个拦截器并重写实例化方法,并让容器在那里创建实例


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

这有什么用吗?我还希望通过sm将依赖项注入到我的实体中。不,我认为我通过重新思考问题并避免依赖项注入来解决这个问题:)