2010-10-18 96 views
0

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

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

更多信息:我尝试使用自定义激活器为我的实体,但这是行不通的,因为温莎发现异常时,它会检测到无法解决依赖关系,所以它在使用我的激活之前吹。

一些代码:

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

让我们假设我有以上的实体:如果我试图解决通过温莎它抛出一个异常,告诉我,产品正在等待所有未注册的一些依赖该实体。如果我单独使用NHibernate,一切正常。所以,基本上我试图在通过Windsor解决我的实体的同时模拟NHibernate的行为。

在此先感谢,

豪尔赫·巴尔加斯。

+0

“字符串名称”不能是Windsor组件。不知道你想要温莎在那里填写。 – 2010-10-19 16:09:13

+0

我不想让温莎填充任何东西,这是我的观点。我希望它选择受保护的构造函数,NHibernate的工作方式。或者我不知道在NHibernate创建代理之后是否还有其他方法可以添加一些拦截器。我想要做的是在ChinookMediaManager中完成自动PropertyChanged通知,但如果我的实体没有通过Windsor解决,我不能这样做。我希望这能让你更好地理解我想做什么。谢谢Mauricio。 – 2010-10-20 01:05:32

回答

1

你不需要在你的NHibernate实体中拥有无参数的构造函数或者编写自定义的Windsor激活器。见this article

+0

我已经看过那篇文章,但我没有面对这个问题。我用更多的信息更新了我的问题,我希望你知道一种方法去做我想问的问题。谢谢。 – 2010-10-19 15:19:33

相关问题