Подтвердить что ты не робот

Как найти возвращаемый тип метода с System.Reflection.MethodBase в С#?

как узнать возвращаемый тип метода из MethodBase? Я использую PostSharp и пытаюсь переопределить метод CompileTimeValidate (MethodBase method), чтобы убедиться, что атрибут применяется к методу с правильной сигнатурой.

Спасибо,

4b9b3361

Ответ 1

MethodBase используется как базовый класс MethodInfo, который имеет свойство ReturnType.

Вы можете попробовать и привести к экземпляру MethodInfo и проверить это свойство.

Ответ 2

MethodBase сам не имеет типа возврата, поскольку в дополнение к обычным методам он также используется для представления методов, таких как конструкторы, которые не имеют типа возврата. Вместо этого вам нужно посмотреть, является ли это экземпляром MethodInfo и проверить, что для свойства ReturnType.

CompileTimeValidate(MethodBase method) {
  var normalMethod = method as MethodInfo;
  if( normalMethod != null) {
    ValidateReturnType(normalMethod.ReturnType);
  }
}

Ответ 3

Попробуйте что-нибудь подобное. MethodInfo имеет свойство, но MethodBase также используется для конструкторов, и у них нет типа возврата.

MethodBase b = this.GetType().GetMethods().First(); 
if(b is MethodInfo)
    MessageBox.Show((b as MethodInfo).ReturnType.Name);

Ответ 4

Попробуйте свойство MethodInfo.ReturnType.

Чтобы получить свойство возвращаемого типа, сначала получите Type. Из Type возьмите MethodInfo. Из MethodInfo введите ReturnType.

Похоже, вы не можете сделать это с помощью MethodBase...

http://msdn.microsoft.com/en-us/library/system.reflection.methodinfo.returntype.aspx