28

MethodBase からメソッドの戻り値の型を調べるにはどうすればよいですか? 私は PostSharp を使用しており、 CompileTimeValidate(MethodBase method) メソッドをオーバーライドして、属性が正しい署名を持つメソッドに適用されていることを確認しようとしています。

ありがとう、

4

4 に答える 4

23

MethodBase は、プロパティReturnTypeを持つMethodInfoの基本クラスとして使用されます。

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 に答える