0

テンプレートを使用してオーバーロードされたメソッドがあります。GetMethod は、指定されたタイプのパラメーターのメソッド情報を返しません。次のコードからメソッド情報を取得するために必要な正しい型シグネチャを特定するのに助けが必要です

public class MyClass
{
    public void MyFunc<Template>(int a)
    { }
    public void MyFunc<Template>(long a)
    { }
    public void MyFunc<Template>(MyClass1<Template, int> a)
    { }
    public void MyFunc<Template>(MyClass1<Template, long> a)
    { }
}

public class MyClass1<T,G>
{ }

私はそれを次のように使用しています:

static void Main(string[] args)
{
    Type[] types = new Type[] 
    {
        typeof(MyClass1<object, int>)
    };

    //Contains Required Method
    var allAvailMethods = typeof(MyClass).GetMethods();

    //required method void MyFunc<Template>(MyClass1<Template, int> a)
    //Returns NULL
    var requiredMethod = typeof(MyClass).GetMethod("MyFunc", types);
}
4

0 に答える 0