我正在使用castle.dynamicproxy2,我正在实例化我的代理,如下所示:
private static T GenerateProxy()
{
ArrayList addtlInterfaces = new ArrayList();
addtlInterfaces.Add(typeof (INotifyPropertyChanged));
addtlInterfaces.Add(typeof (EntityStatus));
object entityProxy = ProxyGenerator.CreateClassProxy(typeof(T),
addtlInterfaces.ToArray(typeof(Type)) as Type[],
ProxyGenerationOptions.Default,
new IInterceptor[] { new LazyInterceptor() });
return (T)entityProxy;
}
我的IEntityStatus界面如下:
public interface IEntityStatus
{
bool IsDirty
{ get; set;}
}
我需要能够在运行时使用该属性,这样当我的DTO发生属性更改事件时,事件可以将DTO设置为脏的。然而,由于它是一个接口,并且没有明确的实现,我对于如何实现这一点感到茫然。我希望避免为get-and-set方法创建委托。那么,有没有其他方法来实现我期望实现的目标呢?
我意识到我可以设置所有活动DTO的集合,当某个DTO上触发属性更改事件时,我可以更新该集合以显示该特定DTO是脏的,但为了纯粹的语法上的方便,我真的希望此信息成为代理DTO的一部分。
期待回应!