2009-07-23 5 views
1

私はCastle.DynamicProxy2を使用しています、そのように私は私のプロキシをインスタンス化しています:IEntityStatusの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; 
} 

私のインターフェイスは、次のようになります。

public interface IEntityStatus 
{ 
    bool IsDirty 
    { get; set;} 
} 

実行時にそのプロパティを使用できるようにする必要があります。そのため、DTOにプロパティが変更されたイベントがあると、DTOをDTOに設定できます。しかし、それはインターフェイスであり、明示的な実装がないので、私はこれをどうやって行うのか迷っています。 getメソッドとsetメソッドのデリゲートを作成することは避けたいオプションです。それで、私が達成しようとしていることを達成する別の方法がありますか?

私はすべてのアクティブなDTOのコレクションを設定できるとわかりました。そのプロパティがDTOのいずれかでイベントを発生させたとき、その特定のDTOが汚れていることを示すコレクションを更新できましたが、純粋な構文容易性のためにプロキシされたDTOの一部となる情報。

返信を楽しみにしています!

答えて

2

私はあなたがINotifyPropertyChangedをどのように扱うのか知っていませんが、私は両方のインターフェースにmixinを使って、別のイベントを購読しています。それは実行可能な解決策ですか?

関連する問題