как я узнаю тип возврата метода от MethodBase? Я использую PostSharp и пытаюсь переопределить CompileTimeValidate (метод MethodBase) метод, чтобы удостовериться, что атрибут применяется к методу с корректной подписью.
Спасибо,
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
.
Чтобы получить свойство возвращаемого типа, сначала получите Тип
. Из Типа
получите MethodInfo
. Из MethodInfo
получите ReturnType
.
Похоже, вы не можете этого сделать с помощью MethodBase ...
http://msdn.microsoft.com/en-us/library/system.reflection.methodinfo.returntype.aspx