getmethod (methodname, new [] Type) в массивах Type содержит параметр ref и метод переопределяется - PullRequest
0 голосов
/ 26 июня 2010

Например

class xx
{
    public string name
    {
        get {return "";}
    }
}

class yy
{
    public string name(string n)
    {
         return "";
    }

    public string name(string n,ref string m)
    {
        return "";
    }

    public string name(string n,string m,ref xx k)
    {
        return "";
    }
}

Как получить метод "name" по технологии отражения?

Ответы [ 2 ]

1 голос
/ 26 июня 2010

Нет простого способа сделать это, используя GetMethod.Тем не менее, вы можете легко сделать это с GetMethods и Linq:

var methodInfo = from m in typeof(yy).GetMethods()
                 where m.Name == "name"
                 let prms = m.GetParameters()
                 where prms.Length == 3
                 && prms[0].ParameterType == typeof(string)
                 && prms[1].ParameterType == typeof(string)
                 && prms[2].ParameterType == typeof(xx).MakeByRefType()
                 select m;
0 голосов
/ 27 июня 2016

Вы можете использовать Type.MakeByRefType() -Metod для создания параметра типа ref. Остальное делают классы отражения.

var method = typeof(yy).GetMethod(
    "name", 
    new[] {typeof(string), typeof(string).MakeByRefType()});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...