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

How do I get a string representation from a nullable type?

说我有类似的东西

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 returns 通用参数的完整程序集限定名称。但是 ToString() 方法会打印一个更友好的名字,也许这就是你想要的:

System.Nullable`1[System.DateTime]

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