2017-02-01 7 views
2

私はMono.Cecilを使っていくつかのフィールドとメソッドをさまざまな型に追加しています。メンバーの名前をどのようにして既存のメンバーとの競合を避けるべきなのか疑問に思っています。追加したいメンバーごとに文字列比較を行うには、すべてのフィールド、メソッド、プロパティを調べる必要がありますか、Cecilに自動的に自由メンバー名を選択させる方法がありますか?Mono.Cecilが新メンバーの名前をどのように追加する必要がありますか?

答えて

3

デバッグの目的(たとえば、名前がスタックトレースに表示される場合など)では、意味のある名前を使用する方がよいでしょう。ただし、既存のメンバーとの競合を避けるために、C#識別子で許可されていない文字を使用することもできます。たとえば、フィールドの名前を<YourLibraryName>_MeaningfulFieldNameHereとします。これは、C#コンパイラ自体がコンパイラ生成メンバー(プロパティのバッキングフィールドなど)に対して行うことです。

+0

意味のある名前は素晴らしいですが、誰かが自分のモディファイアをアセンブリ上で実行していて、ソースがなく、アセンブリが壊れていた場合、かなり壊滅的でした。無効な文字を使用することは優れた解決策です。とにかくフィールドを使用するメソッドを変更すると、バグを作成する可能性が高くなります。 – SilentSin

+0

また、衝突の可能性をさらに減らすために、多かれ少なかれユニークな接頭辞(YourLibraryName)を使用することをお勧めします。 – Evk

関連する問題