1
我使用Castle.DynamicProxy2,我實例化我的代理這樣: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的一部分,用於純粹的句法緩和。
期待回覆!