-3

可能重复:
通过反射检测可空类型

我有这个代码:

string type = string.Empty;
PropertyInfo[] propertyInfos = typeof(T).GetProperties();
foreach (var item in propertyInfos)
    if (item.Name.ToUpper() == searchField.ToUpper())
    {
        type = item.PropertyType.FullName;
        break;
    }   

switch (type)
{
    case "System.Int32":
        //...
        break;
    case "System.Single":
        //...
        break;
}

代码有效,但问题是类型何时可以为空。如何知道类型是否可以为空?可空类型(int32?long?double?)以及如何将字符串转换为可空类型?

谢谢,

4

1 回答 1

0

试试下面的代码将帮助你

System.Reflection.FieldInfo[] fieldsInfos = typeof(NullWeAre).GetFields();

        foreach (System.Reflection.FieldInfo fi in fieldsInfos)
        {
            if (fi.FieldType.IsGenericType
                && fi.FieldType.GetGenericTypeDefinition().Equals(typeof(Nullable<>)))
            {
                // We are dealing with a generic type that is nullable
                Console.WriteLine("Name: {0}, Type: {1}", fi.Name, Nullable.GetUnderlyingType(fi.FieldType));
            }

    }
于 2012-12-18T07:20:54.223 回答