2009-09-20 9 views

答えて

7

これは、(クラスを継承する動的な型を書くことによって)それを上書きすることができるようにするためにはvirtualである必要があります。private virtualを持つことはできません。おそらくinternal virtualを無効にすることができますが、これでもセキュリティの問題が発生する可能性があります。最終的に、私はいいえと言います。

1

反射を使用していません。あなたはAOPのいくつかの並べ替えを使用する必要があります。

5

反射のみを使用しているわけではありません。おそらくあなたができる最も良い方法は、Reflection.EmitまたはCodeDomと組み合わせてReflectionを使用して、クラスを新しい名前空間に複製することです。あなたが置きたいプライベートメソッドを見つけたら、あなたはそれをコピーしないで、あなたはあなたの置換えを出します。

しかし、この手法をもっとはるかに難しくする多くの手法が開発者が使用できます。クラスの実装を多くのプライベートクラスまたは内部クラスに分割することはその1つです。

注:CodeDomを使用すると、グラフをメモリに作成し、コンパイルし、結果のアセンブリをロードする必要があります。

これはおそらくそれが価値があるよりも多くのトラブルです。

他の方法は、Reflectorを使用してクラスを逆アセンブルし、コードを取り込み、メソッドreplaceを使用して独自のクラスを構築することです。ここでも、克服すべき重要な技術的および法的なハードルがあります。あなたは逆アセンブルされたコードから多くを学ぶかもしれません。

+0

...コードがわかりにくい場合は、何も習得しないかもしれません。 –

+2

あなたはいくつかのコードが難読化されていることを知ることができます:-) –