Установка всех параметров нулевого объекта в string.empty
У меня есть объект, который содержит строки и другие объекты, которые содержат строки, что мне нужно сделать, это убедиться, что объект и любые дочерние объекты имеют пустую строку, а не нулевое значение, пока это работает нормально:
foreach (PropertyInfo prop in contact.GetType().GetProperties())
{
if(prop.GetValue(contact, null) == null)
{
prop.SetValue(contact, string.empty);
}
}
проблема в том, что это работает только для строк объектов, а не для строк подобъектов. Есть ли способ также перебрать все подчиненные объекты и установить их строки в string.Empty
если найден null
?
Вот пример объекта "контакт":
new contact
{
a = "",
b = "",
c = ""
new contact_sub1
{
1 = "",
2 = "",
3 = ""
},
d = ""
}
В основном мне также нужно проверить в contact_sub1
для нулей и замените значение пустым string
,
1 ответ
Вы можете изменить свой текущий код, чтобы получить все подчиненные объекты, а затем выполнить ту же проверку свойств нулевой строки.
public void SetNullPropertiesToEmptyString(object root) {
var queue = new Queue<object>();
queue.Enqueue(root);
while (queue.Count > 0) {
var current = queue.Dequeue();
foreach (var property in current.GetType().GetProperties()) {
var propertyType = property.PropertyType;
var value = property.GetValue(current, null);
if (propertyType == typeof(string) && value == null) {
property.SetValue(current, string.Empty);
} else if (propertyType.IsClass && value != null && value != current && !queue.Contains(value)) {
queue.Enqueue(value);
}
}
}
}