メソッドの名前があります: "Garden.Plugins.Code.Beta.Business.CalculateRest"
実行方法は?RunMethod(string MethodName) のようなこの派手なリフレクションベースのソリューションについて考えます
メソッドの名前があります: "Garden.Plugins.Code.Beta.Business.CalculateRest"
実行方法は?RunMethod(string MethodName) のようなこの派手なリフレクションベースのソリューションについて考えます
BindingFlags.Public | BindingFlags.Static
。インスタンス メソッドまたはパラメーターを受け取るメソッドを呼び出したい場合は、その情報を取得する方法も検討する必要があります。
最後のドットの左側のすべてをリテラル型名として扱うほど単純ではありません。フォームのタイプがある場合:
XYZタイプ
X、Y、Z が名前空間であるとは限りません。それらは型自体である場合もあり、後続の部分は内部クラスである場合もあります。
class X
{
class Y
{
// etc
}
}
この場合、Type.GetType("X.YU") は Y クラスに解決されません。代わりに、clr は内部クラスを + 記号で区切るため、実際に Type.GetType("X+ Y");
呼び出しているメソッドがparamsメソッドの場合は、追加の作業が必要になります。変数パラメーターを配列にロールアップして、これを渡す必要があります。メソッドのParameterInfoデータを取得し、最後のパラメーターにParamArray属性が付加されているかどうかを確認することで、変数パラメーターを確認できます。
型がインスタンス型の場合:
Type.GetType("Garden.Plugins.Code.Beta.Business")
.GetMethod("CalculateRest").Invoke(myInstanceOfTheType, param1, param2);
静的メソッドの場合:
Type.GetType("Garden.Plugins.Code.Beta.Business")
.GetMethod("CalculateRest").Invoke(null, param1, param2);
パラメータを取らない場合は、「param1、param2など」を省略してください...
それは遅くなるでしょう、私を信じてください。したがって、重要な場所に置かないでください。
それ以外は、「手動」で行う必要があります。必要なものが見つかるまで、すべての名前空間、クラスなどの列挙を開始します。すでにこれを行う派手な既製のものはないと思います。(調べてないけど)