我正在使用 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 和 set 方法创建一个委托是我想避免的一个选项。那么还有另一种方法可以实现我想要实现的目标吗?
我意识到我可以设置我所有活动 DTO 的集合,并且当属性更改事件在其中一个 DTO 上触发时,我可以更新该集合以显示该特定 DTO 是脏的,但我真的希望这些信息是代理 DTO 的一部分,用于纯粹的语法简化。
期待回复!