Как найти возвращаемый тип метода с System.Reflection.MethodBase в С#?
как узнать возвращаемый тип метода из MethodBase? Я использую PostSharp и пытаюсь переопределить метод CompileTimeValidate (MethodBase method), чтобы убедиться, что атрибут применяется к методу с правильной сигнатурой.
Спасибо,
Ответ 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...