2014-06-27 50 views
1

我具有數p作爲的ParameterInfo如何在「out」聲明的情況下通過typeParameterInfo查找參數類型。

p.ParameterType.GetTypeInfo() 

返回

{名稱= 「十進制&」 全名= 「System.Decimal &」} {System.Reflection.TypeInfo System.RuntimeType}

在現實世界中th是一個方法的參數out double

尋找參數double性質的最佳方法是什麼?名稱比較方法只是它的工作方式?

+0

我將您的問題輸入[Google](https://www.google.com.au/webhp?sourceid=chrome-instant&rlz=1C1CHLW_enAU510AU510&ion=1&espv=2&ie=UTF-8#q=get%20underlying%20type% 20of%20out&safe = off)並找到[this](http://stackoverflow.com/q/738277/242520) –

+0

「FullName =」System.Decimal&「...在現實世界中,這是一個'out double'參數」Something doesn這裏加起來。 – svick

回答

3
Type type = p.ParameterType; 
if(type.IsByRef) 
{ 
    Type actualType = type.GetElementType(); 
    // ... 
} 
else 
{ 
    // ... 
} 

以上對陣列也有用(與type.IsArray注)。對於Nullable<T>,您可以使用Nullable.GetUnderlyingType(...)

關於IsByRef的主題:請注意out實際上只是ref,它具有關於明確賦值的特殊規則;在IL級別,只有ref確實存在(out只是編譯器糖果)。

相關問題