C# 如何将对象内的所有空列表转换为 null



首先,我知道流行的建议是你应该避免返回空列表。但截至目前,由于种种原因,我别无选择,只能这样做。

我要问的是,我如何遍历对象的属性(可能通过Reflection),获取我可能找到的任何列表并检查它是否为空。如果是这样,则将其转换为null,否则,保留它。

我坚持使用以下代码,其中包括一些Reflection尝试:

private static void IfEmptyListThenNull<T>(T myObject)
{
foreach (PropertyInfo propertyInfo in myObject.GetType().GetProperties())
{
if (propertyInfo.PropertyType.IsGenericType && propertyInfo.PropertyType.GetGenericTypeDefinition() == typeof(List<>))
{
//How to know if the list i'm checking is empty, and set its value to null
}
}
}

这应该对您有用,只需使用GetValue方法并将值转换为IList,然后检查空性并通过SetValue设置此值以null

private static void IfEmptyListThenNull<T>(T myObject)
{
foreach (PropertyInfo propertyInfo in myObject.GetType().GetProperties())
{
if (propertyInfo.PropertyType.IsGenericType && propertyInfo.PropertyType.GetGenericTypeDefinition() == typeof(List<>))
{
if (((IList)propertyInfo.GetValue(myObject, null)).Count == 0)
{
propertyInfo.SetValue(myObject, null);
}
}
}
}

相关内容

  • 没有找到相关文章

最新更新