2010-03-11 63 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

相關問題