如何从MethodBase中找出方法的返回类型?我正在使用PostSharp并尝试覆盖CompileTimeValidate(MethodBase方法)方法,以确保该属性应用于具有正确签名的方法。
谢谢,
答案 0 :(得分:21)
MethodBase
本身没有返回类型,因为除了普通方法之外,它还用于表示没有返回类型的方法,例如构造函数。相反,您需要查看它是否是MethodInfo
的实例并检查ReturnType
属性。
CompileTimeValidate(MethodBase method) {
var normalMethod = method as MethodInfo;
if( normalMethod != null) {
ValidateReturnType(normalMethod.ReturnType);
}
}
答案 1 :(得分:19)
MethodBase用作MethodInfo的基类,其属性为ReturnType。
您可以尝试强制转换为MethodInfo的实例并检查该属性。
答案 2 :(得分:1)
尝试这样的事情。 MethodInfo
具有属性,但MethodBase
也用于构造函数,并且它们没有返回类型。
MethodBase b = this.GetType().GetMethods().First();
if(b is MethodInfo)
MessageBox.Show((b as MethodInfo).ReturnType.Name);
答案 3 :(得分:0)
尝试MethodInfo.ReturnType
属性。
要获取返回类型属性,请首先获取Type
。从Type
开始,获取MethodInfo
。从MethodInfo
开始,获取ReturnType
。
看起来你不能用MethodBase来做...
http://msdn.microsoft.com/en-us/library/system.reflection.methodinfo.returntype.aspx