2

クラスXは、リフレクションメソッドを使用して、クラスYに特定のメソッドがあるかどうかを確認します。クラスYがクラスXがチェックしていたメソッドの詳細を見つける方法はありますか?

4

2 に答える 2

5

リフレクションは、インスタンスではなくタイプ定義で実行されます。

インスタンスは、必要に応じて値を取得するために使用され、値の保存場所のみです。タイプ定義は、この保存領域のマップです。

そのため、インスタンスでReflectionが使用されたかどうかを示すことはできません...それでも、達成しようとしている問題が解決されないため、ここでさらに詳しく説明します。

CLRがリフレクションを実行する場合、リフレクションが実行されたという痕跡を残さない方法でリフレクションを実行し、リフレクションの実行に関連するメモリコストを節約します。

CLRを変更せずに、そのような表示を残すことはできません。

この問題を解決する別の方法は、タイプ情報をディクショナリに格納するリフレクションキャッシュを提供することです。これにより、特定のタイプをリフレクトしたかどうかを判断し、リフレクションを再度実行するのではなく、ディクショナリの情報を使用できます。

C#でメソッド呼び出しをインターセプトするにはどうすればよいですか?を参照してください。

于 2013-03-11T14:43:02.747 に答える
2

クラスYがクラスXがそれを反映していることを知る唯一の方法は、クラスXがメソッドを呼び出すか、プロパティの値を設定または取得することによって、クラスYに何らかの方法で通知する場合です。したがって、正解は「いいえ」です。

于 2013-03-11T14:37:07.883 に答える