Ответ 1
MethodBase используется как базовый класс MethodInfo, который имеет свойство ReturnType.
Вы можете попробовать и привести к экземпляру MethodInfo и проверить это свойство.
как узнать возвращаемый тип метода из MethodBase? Я использую PostSharp и пытаюсь переопределить метод CompileTimeValidate (MethodBase method), чтобы убедиться, что атрибут применяется к методу с правильной сигнатурой.
Спасибо,
MethodBase используется как базовый класс MethodInfo, который имеет свойство ReturnType.
Вы можете попробовать и привести к экземпляру MethodInfo и проверить это свойство.
MethodBase
сам не имеет типа возврата, поскольку в дополнение к обычным методам он также используется для представления методов, таких как конструкторы, которые не имеют типа возврата. Вместо этого вам нужно посмотреть, является ли это экземпляром MethodInfo
и проверить, что для свойства ReturnType
.
CompileTimeValidate(MethodBase method) {
var normalMethod = method as MethodInfo;
if( normalMethod != null) {
ValidateReturnType(normalMethod.ReturnType);
}
}
Попробуйте что-нибудь подобное. MethodInfo
имеет свойство, но MethodBase
также используется для конструкторов, и у них нет типа возврата.
MethodBase b = this.GetType().GetMethods().First();
if(b is MethodInfo)
MessageBox.Show((b as MethodInfo).ReturnType.Name);
Попробуйте свойство MethodInfo.ReturnType
.
Чтобы получить свойство возвращаемого типа, сначала получите Type
. Из Type
возьмите MethodInfo
. Из MethodInfo
введите ReturnType
.
Похоже, вы не можете сделать это с помощью MethodBase...
http://msdn.microsoft.com/en-us/library/system.reflection.methodinfo.returntype.aspx