动态创建可空类型

本文关键字:类型 创建 动态 | 更新日期: 2023-09-27 18:01:18

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

public Type CreateNullable(Type type){
    if (type.IsValueType)
        return Nullable<type>;
    // Is already nullable
    return type;
}

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

动态创建可空类型

public Type CreateNullable(Type type){
    if (type.IsValueType)
        return typeof(Nullable<>).MakeGenericType(type);
    // Is already nullable
    return type;
}

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;
}