Я хочу перебрать свой класс Car с отражением, чтобы удалить все нулевые значения и заменить их более подходящими значениями, такими как string = "".
[Serializable()]
public class Car
{
public string model;
public int year;
public List<Owner> owner;
}
[Serializable()]
public class Owner
{
public string firstName;
public string lastName;
}
Я сделал это до сих пор
public void LoopEverythingAndFix(object type)
{
var prop = type.GetType().GetFields();
foreach (var fieldInfo in prop)
{
if (GetType(fieldInfo))
{
var value = fieldInfo.GetValue(type);
if (value == null)
fieldInfo.SetValue(type, GetDefaultValue(fieldInfo));
}
else
{
LoopEverythingAndFix(fieldInfo);
}
}
}
public bool GetType(System.Reflection.FieldInfo fieldInfo)
{
if (fieldInfo.FieldType == typeof(string))
return true;
if (fieldInfo.FieldType == typeof(bool))
return true;
if (fieldInfo.FieldType == typeof(int))
return true;
if (fieldInfo.FieldType == typeof(decimal))
return true;
return false;
}
Метод GetType
должен знать, является ли текущее поле классом, подобным классу "owner", или его значением или ссылочным полем, например, int / string, и если это тип "owner", то я хочуЗациклите это и исправьте эти свойства.
Проблема в том, что он находит «владельца» в классе автомобиля и выполняет команду:
LoopEverythingAndFix(fieldInfo);
, где проблема, потому чтоя посылаю fieldInfo
методу LoopEverythingAndFix
и когда он возвращается в цикл, он получает 0 полей в type.GetType().GetFields()
.Это список, и я хочу зациклить элементы списка и отправить их в метод LoopEverythingAndFix