Как я нахожу тип возврата метода с Системой. Отражение. MethodBase в C#?

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

Спасибо,

26
задан theburningmonk 22 March 2010 в 18:25
поделиться

4 ответа

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

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

20
ответ дан 28 November 2019 в 07:22
поделиться

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

CompileTimeValidate(MethodBase method) {
  var normalMethod = method as MethodInfo;
  if( normalMethod != null) {
    ValidateReturnType(normalMethod.ReturnType);
  }
}
21
ответ дан 28 November 2019 в 07:22
поделиться

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

MethodBase b = this.GetType().GetMethods().First(); 
if(b is MethodInfo)
    MessageBox.Show((b as MethodInfo).ReturnType.Name);
1
ответ дан 28 November 2019 в 07:22
поделиться

Попробуйте использовать свойство MethodInfo.ReturnType .

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

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

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

0
ответ дан 28 November 2019 в 07:22
поделиться
Другие вопросы по тегам:

Похожие вопросы: