C# · 12月 27, 2021

c# – 从Nullable类型的反射中获取PropertyType.Name

我想使用反射获取属性类型.
这是我的代码 var properties = type.GetProperties();foreach (var propertyInfo in properties){ model.ModelProperties.Add( new KeyValuePair<Type,string> (propertyInfo.PropertyType.Name,propertyInfo.Name) );}

这个代码propertyInfo.PropertyType.Name是好的,但如果我的属性类型是Nullable我得到这个Nullable’1字符串,如果写FullName如果得到这个搅拌System.Nullable1 [[System.DateTime,mscorlib,版本= 4.0.0.0,Culture =中立,PublicKeyToken = b77a5c561934e089]]

解决方法 更改代码以查找可空类型,在这种情况下,将PropertyType作为第一个通用的agruement: var propertyType = propertyInfo.PropertyType;if (propertyType.IsGenericType && propertyType.GetGenericTypeDeFinition() == typeof(Nullable<>)) { propertyType = propertyType.GetGenericArguments()[0]; }model.ModelProperties.Add(new KeyValuePair<Type,string> (propertyType.Name,propertyInfo.Name));