【发布时间】:2017-03-02 21:53:37
【问题描述】:
我有一个函数可以在对象上找到具有空值的属性并将它们设置为 null。这工作正常。现在的问题是有时有一个嵌套对象,我不知道如何迭代它来执行相同的逻辑。
public static T SetEmptyPropertiesNull<T>(T request, Type type)
{
foreach (PropertyInfo property in type.GetProperties())
{
object value = property.GetValue(request, null);
if (string.IsNullOrWhiteSpace((value ?? string.Empty).ToString()))
property.SetValue(request, null);
}
return request;
}
例如,假设我有一个 Customer 对象,并且在该对象上我有一个 Address 对象。我现在拥有的函数将查找 Customer 对象上的所有空值并将它们转换为 null,但它还需要查找嵌套 Address 对象上的所有值并将它们转换为 null。可以为不同的对象类型调用此函数,并且并非所有对象类型都有嵌套对象。有什么想法吗?
更新:
所以这行得通,但我真的很想在不必指定对象类型 AddressDto 的情况下完成此操作。我希望它是动态的并接受任何对象类型。
public static T SetEmptyPropertiesNull<T>(T request)
{
foreach (PropertyInfo property in request.GetType().GetProperties())
{
object value = property.GetValue(request, null);
if (value.GetType() == typeof(AddressDto))
SetEmptyPropertiesNull(value);
else if (string.IsNullOrWhiteSpace((value ?? string.Empty).ToString()))
property.SetValue(request, null);
}
return request;
}
【问题讨论】:
-
为什么要设置一个对象的属性,然后设置为空?有什么意义?
-
我最初没有设置它们。我正在从另一个进程接收它们,它们可能是空的。
标签: c# object reflection