如何在C#中使用System.Reflection.MethodBase找到方法的返回类型?

时间:2010-03-22 18:25:01

标签: c# .net reflection postsharp

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

谢谢,

4 个答案:

答案 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