Castle.Windsor:使用空保护构造函数解析Type

时间:2010-10-18 23:11:07

标签: castle-windsor

我正在使用NHibernate + Castle.Windsor向我的实体添加一些行为。这意味着NHibernate通过Windsor创建实体。这意味着我必须有一个默认的空构造函数,因此Windsor将能够实例化我的实体。我不喜欢这个有很多原因,主要原因是我不喜欢物体处于不稳定的状态。

有没有办法可以在没有公共无参数构造函数的情况下实例化实体?

更多信息:我尝试为我的实体使用自定义Activator,但这不起作用,因为Windsor在检测到无法解决依赖关系时抛出异常,因此在使用我的激活器之前它会爆炸。

一些代码:

public class Product
{
    public string Name { get; set; }
    public Product(string name)
    {
        Name = name;
    }
    protected Product() { }
}

假设我有上面的实体:如果我尝试通过Windsor解析该实体,它会抛出一个异常,告诉我Product正在等待一些未注册的依赖项。如果我单独使用NHibernate,一切正常。所以,基本上我是在尝试通过Windsor解析我的实体时在那个场景中模仿NHibernate行为。

提前致谢,

Jorge Vargas。

1 个答案:

答案 0 :(得分:1)

您不需要在NHibernate实体中使用无参数构造函数或编写自定义Windsor激活器。请参阅this article