如何从可空类型获得字符串表示形式

本文关键字:字符串 表示 类型 | 更新日期: 2023-09-27 18:12:10

假设我有一个像

var T = Type.GetType("System.Nullable`1[[System.DateTime, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]]");

,它是一个可空的日期时间。

T.FullName给我:

"System.Nullable`1[[System.DateTime, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]]"

我如何从类型中提取DateTime?Nullable<DateTime>作为字符串表示?

如何从可空类型获得字符串表示形式

可以这样:

var T = Type.GetType("System.Nullable`1[[System.DateTime, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]]");
Type nullableType = Nullable.GetUnderlyingType(T);
string typeName = nullableType != null ? nullableType.Name + "?" : T.Name;

Type.FullName返回通用参数的完整程序集限定名。但是ToString()方法会打印一个更友好的名称,也许这就是你想要的:

System.Nullable`1[System.DateTime]

请注意,如果泛型参数不是来自mscorlib库,ToString返回的类型名称可能无法被Type.GetType(string)方法解析。