c# – typeof(DateTime?).Name == Nullable`1
发布时间:2020-12-15 18:33:17 所属栏目:百科 来源:网络整理
导读:在.Net typeof(DateTime?)中使用Reflection.名称返回“Nullable`1”. 有没有办法将实际类型作为字符串返回. (在本例中为“DateTime”或“System.DateTime”) 我明白DateTime?是Nullable DateTime.除此之外,我只是在寻找可空类型的类型. 解决方法 在这种情
在.Net typeof(DateTime?)中使用Reflection.名称返回“Nullable`1”.
有没有办法将实际类型作为字符串返回. (在本例中为“DateTime”或“System.DateTime”) 我明白DateTime?是Nullable< DateTime>.除此之外,我只是在寻找可空类型的类型. 解决方法
在这种情况下,有一个
Nullable.GetUnderlyingType 方法可以帮助您.可能你最终想要制作自己的实用工具方法,因为(我假设)你将使用可空和非可空类型:
public static string GetTypeName(Type type) { var nullableType = Nullable.GetUnderlyingType(type); bool isNullableType = nullableType != null; if (isNullableType) return nullableType.Name; else return type.Name; } 用法: Console.WriteLine(GetTypeName(typeof(DateTime?))); //outputs "DateTime" Console.WriteLine(GetTypeName(typeof(DateTime))); //outputs "DateTime" 编辑:我怀疑你也可能在类型上使用其他机制,在这种情况下,您可以稍微修改它以获取基础类型或使用现有类型,如果它不可为空: public static Type GetNullableUnderlyingTypeOrTypeIfNonNullable(this Type possiblyNullableType) { var nullableType = Nullable.GetUnderlyingType(possiblyNullableType); bool isNullableType = nullableType != null; if (isNullableType) return nullableType; else return possiblyNullableType; } 对于一种方法来说,这是一个可怕的名字,但我不够聪明,想出一个方法(如果有人建议更好的话,我会很乐意改变它!) 然后作为扩展方法,您的用法可能如下: public static string GetTypeName(this Type type) { return type.GetNullableUnderlyingTypeOrTypeIfNonNullable().Name; } 要么 typeof(DateTime?).GetNullableUnderlyingTypeOrTypeIfNonNullable().Name (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |