MethodBase からメソッドの戻り値の型を調べるにはどうすればよいですか? 私は PostSharp を使用しており、 CompileTimeValidate(MethodBase method) メソッドをオーバーライドして、属性が正しい署名を持つメソッドに適用されていることを確認しようとしています。
ありがとう、
MethodBase からメソッドの戻り値の型を調べるにはどうすればよいですか? 私は PostSharp を使用しており、 CompileTimeValidate(MethodBase method) メソッドをオーバーライドして、属性が正しい署名を持つメソッドに適用されていることを確認しようとしています。
ありがとう、
MethodBase は、プロパティReturnTypeを持つMethodInfoの基本クラスとして使用されます。
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物件をお試しください。
戻り値の型プロパティを取得するには、まずType. から、Typeを取得しMethodInfoます。から、MethodInfoを取得しReturnTypeます。
MethodBaseではできないようです...
http://msdn.microsoft.com/en-us/library/system.reflection.methodinfo.returntype.aspx