如何批量校验列表中对象的空属性并统一设置默认值?
解决方案:批量处理对象的Null属性
你可以通过反射来批量遍历对象的属性,无需逐个判断,自动将null的string类型属性设置为默认值"0"。以下是具体实现:
1. 编写通用处理方法
这个方法会遍历对象的所有公开实例属性,只针对string类型且可写的属性进行null判断和赋值:
private void SetNullStringPropertiesToZero(object targetObj) { if (targetObj == null) return; // 获取所有可写的string类型属性 var stringProps = targetObj.GetType() .GetProperties(BindingFlags.Public | BindingFlags.Instance) .Where(prop => prop.PropertyType == typeof(string) && prop.CanWrite); foreach (var prop in stringProps) { var currentValue = prop.GetValue(targetObj); if (currentValue == null) { prop.SetValue(targetObj, "0"); } } }
2. 在遍历中调用方法
修改你的foreach循环,直接调用上面的方法处理每个对象:
var results = await Login.Connection .Request("TABLE") .Filter("(U_ATRIBUTE eq " + item + " )") .GetAsync<List<OBJECT>>(); foreach (var result in results) { SetNullStringPropertiesToZero(result); }
注意事项
- 针对
DateTime类型:它是值类型,默认不会为null(除非你定义的是DateTime?可空类型),如果需要处理可空日期的默认值,可以扩展上述方法,添加对Nullable<DateTime>的判断逻辑。 - 性能考量:反射会有轻微的性能开销,如果处理的对象数量极大,可以考虑缓存属性信息来优化。
内容的提问来源于stack exchange,提问作者Isabella
相关产品推荐
相关产品推荐

