动态创建可空类型

时间:2014-05-01 04:39:10

标签: c#

我需要将Type变量设置为可空的变量。例如

public Type CreateNullable(Type type){
    if (type.IsValueType)
        return Nullable<type>;

    // Is already nullable
    return type;
}

我看到因为ValueType有一定数量,我想我只是创建一个所有值类型的字典为可空,并返回。但我很想知道是否有更聪明的方式。

2 个答案:

答案 0 :(得分:4)

public Type CreateNullable(Type type){
    if (type.IsValueType)
        return typeof(Nullable<>).MakeGenericType(type);

    // Is already nullable
    return type;
}

答案 1 :(得分:1)

Cory 提供的答案看起来不错,但我会添加检查以确保type尚未Nullable<T>

public Type CreateNullable(Type type){
    if (type.IsValueType && (!type.IsGenericType || type.GetGenericTypeDefinition() != typeof(Nullable<>)))
        return typeof(Nullable<>).MakeGenericType(type);

    // Is already nullable
    return type;
}