gpt4 book ai didi

C#如何将object中的所有空列表变成null

转载 作者:行者123 更新时间:2023-11-30 15:14:20 26 4
gpt4 key购买 nike

首先,我知道流行的建议,你应该 avoid returning empty lists根本。但到现在为止,由于种种原因,我别无选择,只能这样做。

我要问的是如何迭代对象的属性(可能通过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);
}
}
}
}

关于C#如何将object中的所有空列表变成null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55049840/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com