如何为可空类型获取字符串类型

时间:2010-02-16 00:01:56

标签: c# reflection

我正在使用从我的dbml文件生成的数据类的属性生成T4模板。要获取我使用item.PropertyType.Name的类的属性类型,问题是,对于可空类型,它返回Nullable``1 , is there a way to get Nullable for example, or int?`?

3 个答案:

答案 0 :(得分:11)

int? === Nullable<int>。他们是一样的。如果您想知道可空类型是什么类型,那么您可以使用Nullable.GetUnderlyingType(typeof(int?))方法获取类型(在此实例中为int

Nullable.GetUnderlyingType

答案 1 :(得分:7)

GetGenericArguments是你想要的方法。

if (item.PropertyType.IsGenericType) {
    if (item.PropertyType.GetGenericType() == typeof(Nullable<>)) {
        var valueType = item.PropertyType.GetGenericArguments()[0];
    }
}

在第二个想法中,在这种情况下,Darren的答案要简单得多,因为当你传入一个不可为空的类型时它会返回null。

答案 2 :(得分:0)

看看this other question。 Marc Gravell的答案会告诉你如何获得泛型参数的类型。