バックグラウンド
ビルド プロセスの一部として実行されるスクリプトがいくつかあります。これらのスクリプトは、さまざまなソース コード ファイルを調べて、追加のソース コードを生成します。
スクリプトは CodeDom を使用してスクリプトを生成し.cs
、単純なテキスト リーダーを使用してファイルを読み取ります。
質問
スクリプトの 1 つは、呼び出された特定のクラス属性の使用を探してPageMenuItem
おり、その目的は、ページ メニュー項目の静的リストを作成することです。
.cs
すべてのファイルを読み取って"PageMenuItem"
属性を探し、引数の数を数え、どのコンストラクターが使用されているかを把握して、さまざまな情報を引き離すことで、これを実行します。
さまざまなパラメーターを持つ 7 つのコンストラクターがあるため、ソース コードからどのコンストラクターが使用されているかを判断し、情報を解析する方法をPageMenuItem
判断することが非常に難しくなっています。.cs
PageMenuItem
自分でテキストを解析しようとする代わりに、単純にメモリ内にオブジェクトを構築してから、そのプロパティを使用したいと考えています。
そのため、ファイルから属性宣言を取得し、そこから.cs
新しいインスタンスを構築する方法が必要PageMenuItem
です。
それは可能ですか?
この質問の別の言い方:
次の文字列を指定します。
string myCodeStatement = "[MyAttribute(\"asdf\", \"foo\")]";
そのオブジェクトを操作できるように、そのタイプのオブジェクトを作成するにはどうすればよいMyAttribute
ですか? を定義するソース コードに完全にアクセスできますMyAttribute
。