Castle windsor Castle.Windsor:使用空的受保护构造函数解析类型

Castle windsor Castle.Windsor:使用空的受保护构造函数解析类型,castle-windsor,Castle Windsor,我正在使用NHibernate+Castle.Windsor为我的实体添加一些行为。这意味着NHibernate通过Windsor创建实体。这意味着我必须有一个默认的空构造函数,以便Windsor能够实例化我的实体。我不喜欢这样有很多原因,主要是我不喜欢对象处于不稳定的状态 有没有任何方法可以在没有公共无参数构造函数的情况下实例化实体 更多信息:我尝试为我的实体使用自定义激活器,但这不起作用,因为Windsor在检测到无法解决依赖关系时会引发异常,因此在使用我的激活器之前会崩溃 一些代码: pu

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

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

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

一些代码:

public class Product
{
    public string Name { get; set; }
    public Product(string name)
    {
        Name = name;
    }
    protected Product() { }
}
假设我有上面的实体:如果我试图通过Windsor解析该实体,它会抛出一个异常,告诉我产品正在等待一些未注册的依赖项。如果我单独使用NHibernate,一切正常。所以,我基本上是在通过Windsor解析实体的同时,尝试模仿场景中的NHibernate行为

提前感谢,


Jorge Vargas。

您不需要在NHibernate实体中使用无参数构造函数,也不需要编写自定义Windsor激活器。看。

我已经看过那篇文章了,但我没有面临这个问题。我用更多的信息更新了我的问题,我希望你知道一种方法来实现我的要求。谢谢。
string name
不能是温莎组件。我不知道你想让温莎填什么。我不想让温莎填什么,这是我的观点。我希望它选择受保护的构造函数,NHibernate的工作方式。或者,我不知道在NHibernate创建代理之后,是否有其他方法可以添加一些拦截器。我想做的是像在ChinookMediaManager中那样自动更改属性通知,但如果我的实体没有通过Windsor解析,我就不能这样做。我希望这能让你更好地理解我想做什么。谢谢毛里西奥。