Как получить Type [] с аргументами из выражения MethodCallExpression? - PullRequest
0 голосов
/ 03 мая 2010

Я размышляю над классом (в модульном тесте указанного класса), чтобы убедиться, что его члены имеют все необходимые атрибуты. Для этого я создал пару помощников, которые принимают Expression в качестве аргумента. Я делаю некоторые проверки для этого и предпринимаю немного разные действия в зависимости от типа Expression, но это в основном то же самое.

Теперь, моя проблема в в том, что у меня есть несколько методов с одним и тем же именем (но разными сигнатурами), и следующий код выдает AmbiguousMatchException:

// TOnType is a type argument for the type where the method is declared
// mce is the MethodCallExpression
var m = typeof(TOnType).GetMethod(mce.Method.Name);

Теперь, если бы я мог добавить массив Type[] с типами аргументов этого метода в качестве второго параметра для .GetMethod(), проблема была бы решена.

Но как мне найти этот Type[] массив, который мне нужен?

Я преобразовал Expression<Func<...>> в Expression, а затем в MethodCallExpression, и в этом методе содержимое <...> не известно.

1 Ответ

1 голос
/ 03 мая 2010

Почему вы используете отражение, чтобы найти MethodInfo? У вас уже есть это из MethodCallExpression ...

Просто сделайте это:

var m = mce.Method;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...