28

如何从 MethodBase 中找出方法的返回类型?我正在使用 PostSharp 并尝试覆盖 CompileTimeValidate(MethodBase method) 方法以确保将属性应用于具有正确签名的方法。

谢谢,

4

4 回答 4

23

MethodBase 用作MethodInfo的基类,它具有属性ReturnType

您可以尝试转换为 MethodInfo 的实例并检查该属性。

于 2010-03-22T18:29:33.393 回答
22

MethodBase它本身没有返回类型,因为除了普通方法之外,它还用于表示没有返回类型的方法,例如构造函数。相反,您需要查看它是否是一个实例MethodInfo并检查该ReturnType属性。

CompileTimeValidate(MethodBase method) {
  var normalMethod = method as MethodInfo;
  if( normalMethod != null) {
    ValidateReturnType(normalMethod.ReturnType);
  }
}
于 2010-03-22T18:30:09.007 回答
1

尝试这样的事情。MethodInfo具有该属性,但MethodBase也用于构造函数,并且它们没有返回类型。

MethodBase b = this.GetType().GetMethods().First(); 
if(b is MethodInfo)
    MessageBox.Show((b as MethodInfo).ReturnType.Name);
于 2010-03-22T18:31:19.163 回答
0

试试MethodInfo.ReturnType物业。

要获取返回类型属性,首先获取Type. 从Type,得到MethodInfo。从MethodInfo,得到ReturnType

看来你不能用 MethodBase 来做......

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

于 2010-03-22T18:33:33.160 回答