如何获取可空基元类型数组的元素类型?
获取可空基元类型数组的正确元素类型
可以通过检查元素类型是否为Nullable<T>的实例,来获取其底层的非可空类型,具体实现代码如下:
foreach (var _property in typeof(T).GetProperties()) { var _propertyType = _property.PropertyType; var _propertyName = _property.Name; if (_propertyType.IsArray) { var elementType = _propertyType.GetElementType(); string UType; // 校验是否为可空值类型 if (elementType.IsGenericType && elementType.GetGenericTypeDefinition() == typeof(Nullable<>)) { var underlyingType = Nullable.GetUnderlyingType(elementType); UType = underlyingType?.Name ?? elementType.Name; // _null_array 对应的结果为 "Boolean" } else { UType = elementType.Name; // _array 对应的结果为 "Boolean" } // 后续逻辑处理 } }
核心逻辑说明
- 先通过
IsGenericType判断元素类型是否为泛型类型,再用GetGenericTypeDefinition()确认是否匹配Nullable<>的泛型定义 - 调用
Nullable.GetUnderlyingType()方法直接提取可空类型的底层非可空类型 - 增加空值判断,避免因异常情况导致的空引用问题
内容的提问来源于stack exchange,提问作者EBDS
相关产品推荐
相关产品推荐

