クラスをインスタンス化する必要がある MSBuild タスクを使用しています。このクラスにはもともとパラメーターなしのコンストラクターが 1 つしかなかったため、必要な MSBuild タスクはクラスをインスタンス化するための型名だけでした。これで、特定のコンストラクターに対してタスクを実行するユースケースができましたが、これを一般的な方法で処理する方法がわかりません。のさまざまなフレーバーをインスタンス化する必要があるとしますClassA
:
public class ClassA
{
public ClassA() { }
public ClassA(int someArgument) { }
public ClassA(int someArgument, bool someOtherArgument) { }
}
元のタスクは次のようになります。
<DoSomethingTask Assembly="ContainsClassA.dll" Type="ClassA" />
私の理想的なタスクは次のようなもので、引数としてプリミティブ型を持つ任意のコンストラクターを呼び出すことができます。
<DoSomethingTask Assembly="ContainsClassA.dll" Type="ClassA">
<ConstructorArgs>
<Arg type="int">1</Arg>
<Arg type="bool">True</Arg>
</ConstructorArgs>
</DoSomethingTask>
このタイプの機能を取得するために何を検索すればよいか、私は非常に迷っています。文字列プロパティを呼び出しConstructorArgs
て、必要な形式を使用して解析するなどのことができますが、よりクリーンなものが存在することを願っています。ご協力いただきありがとうございます。
編集 - 誰かが疑問に思っている場合に備えて、私が変更しようとしている実際のタスクは、インスタンス化された Entity Framework DbContext に基づいて事前生成されたビューを作成します。さまざまなコンストラクターを持つ独自の DbContext サブクラスがあり、ビューの生成中に特定のコンストラクターを呼び出せるようにしたいと考えています。