繁体   English   中英

动态创建可为空的类型

[英]Create a nullable type dynamically

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

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

    // Is already nullable
    return type;
}

我看到的是ValueType的数量有限,我想我将创建一个所有值类型都可以为null的Dictionary,然后将其返回。 但是我很想看看是否有更聪明的方法。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM