我使用反射來獲取值了匿名類型:C#反映物業類型
object value = property.GetValue(item, null);
當標的值是可空類型(?T),我怎麼能當得到基本類型值爲空?
鑑於
int? i = null;
type = FunctionX(i);
type == typeof(int); // true
尋找FunctionX()。希望這是有道理的。謝謝。
我使用反射來獲取值了匿名類型:C#反映物業類型
object value = property.GetValue(item, null);
當標的值是可空類型(?T),我怎麼能當得到基本類型值爲空?
鑑於
int? i = null;
type = FunctionX(i);
type == typeof(int); // true
尋找FunctionX()。希望這是有道理的。謝謝。
你可以做這樣的事情:
if(type.IsgenericType)
{
Type genericType = type.GetGenericArguments()[0];
}
編輯: 一般用途:
public Type GetTypeOrUnderlyingType(object o)
{
Type type = o.GetType();
if(!type.IsGenericType){return type;}
return type.GetGenericArguments()[0];
}
用法:
int? i = null;
type = GetTypeOrUnderlyingType(i);
type == typeof(int); //true
這對於任何通用類型的工作,不只是可空。
根據我對http://blogs.msdn.com/haibo_luo/archive/2005/08/23/455241.aspx的理解,您將只獲得返回類型的可爲空值的版本。
如果您知道這是Nullable<T>
,您可以使用Nullable
中的靜態幫助GetUnderlyingType(Type)
。
int? i = null;
type = Nullable.GetUnderlyingType(i.GetType());
type == typeof(int); // true
有什麼辦法可以使這個非常普遍的目的?如何處理一個空字符串?我還能找回一個字符串嗎? – andleer 2009-04-29 15:54:42