【发布时间】:2012-06-21 08:26:13
【问题描述】:
我正在使用CreateClassProxyWithTarget 方法装饰现有对象。但是,构造函数和初始化代码被调用了两次。我已经有一个“构造”实例(目标)。我明白为什么会发生这种情况,但是除了使用空的构造函数之外,还有其他方法可以避免吗?
编辑:这是一些代码:
首先创建代理:
public static T Create<T>(T i_pEntity) where T : class
{
object pResult = m_pGenerator.CreateClassProxyWithTarget(typeof(T),
new[]
{
typeof(IEditableObject),
typeof(INotifyPropertyChanged) ,
typeof(IMarkerInterface),
typeof(IDataErrorInfo)
},
i_pEntity,
ProxyGenerationOptions.Default,
new BindingEntityInterceptor<T>(i_pEntity));
return (T)pResult;
}
例如,我将它与以下类的对象一起使用:
public class KatalogBase : AuditableBaseEntity
{
public KatalogBase()
{
Values = new HashedSet<Values>();
Attributes = new HashedSet<Attributes>();
}
...
}
如果我现在打电话给BindingFactory.Create(someKatalogBaseObject); Values 和 Attributes
属性正在重新初始化。
【问题讨论】:
-
你能用一些代码来说明你遇到的问题吗?
-
@KrzysztofKoźmic 我用一些代码更新了我的问题,显示了问题。
标签: c# castle-dynamicproxy dynamic-proxy