2010-03-11 64 views

回答

1

检查ParameterInfo实例的可选自定义修饰符:

bool IsLongParameter(System.Reflection.ParameterInfo p) { 
    Type[] modifiers = p.GetOptionalCustomModifiers(); 
    return modifiers.Contains(typeof(System.Runtime.CompilerServices.IsLong)); 
} 
+0

它的工作原理,但是,出于某种奇怪的原因,它不应该的方法签名恰好是无效美孚([out]长N); :( – Anzurio 2010-03-11 18:58:15

+0

@AZ:在这种情况下,C++/CLI编译器是否附加了“IsLong”属性,还是简单地衰减为“int”? – 2010-03-11 19:01:35

+0

使用Red Gate的.NET Reflector时,它仍然有modopt(IsLong )modifier.C#中的完整签名出现:void foo(out int modopt(IsLong)m); – Anzurio 2010-03-11 19:09:20

相关问题