1

プロキシのプロパティ タイプをプロキシする必要があります。したがって、次のようになります。

インターフェイスIMyInterfaceがあります:

public interface IMyInterface
{
    public String Name {get; set;}
    public Int Id {get;set;}
}

インターフェイスは問題なくモックできますが、たとえば Name プロパティをモックできるようにしたいと考えています。String は封印されているためモックできないことに気づきました。私が見たい機能は次のとおりです。

IMyInterfaceMock.Name.Equals() 

インターセプターで処理する必要があります。プロパティのタイプを変更することになるため、これが既存のフレームワークでも可能であるとは想像できませんが、これを達成するための賢い方法があるかどうか疑問に思っていました。プロキシの生成に介入して、プロキシのプロパティの戻り値の型を変更する方法はありますか?

現状のDynamicProxy2ではそれが可能だとは思いませんが、誰か魔法を知っているかどうか疑問に思っていました.

4

2 に答える 2

1

a. 無効なオーバーライドを意味するため、返された型を変更することはできません。b. できたとしても、封印されている文字列では何もオーバーライドできないため、通常の厳密に型指定されたプログラミング言語を使用する CLR では不可能です。

于 2010-01-08T16:55:28.877 に答える
0

タイプが無効なオーバーライドになることを認識しています。私が本当に探していたのは、動的型を生成する方法でした。System.Reflection.Emit クラスを使用してこれを実現しました。

プロパティのタイプが既知のタイプである動的タイプを作成し、それをインターセプトできます。

プロキシ オブジェクトを PowerShell パイプラインに書き込んでいたため、出力された型はあまり気にしていないことを説明する必要がありました。比較演算子を評価する方法が必要なだけです。

于 2010-01-08T19:03:58.090 に答える