Я хочу получить все свойства объекта во время выполнения и сохранить его в базе данных вместе с его значениями.Я делаю это рекурсивно, т. Е. Всякий раз, когда свойство также находится на объекте, я вызываю тот же метод и передаю свойство как параметр.
См. Мой код ниже:
private void SaveProperties(object entity) {
PropertyInfo[] propertyInfos = GetAllProperties(entity);
Array.Sort(propertyInfos,
delegate(PropertyInfo propertyInfo1, PropertyInfo propertyInfo2)
{ return propertyInfo1.Name.CompareTo(propertyInfo2.Name); });
_CurrentType = entity.GetType().Name;
foreach (PropertyInfo propertyInfo in propertyInfos) {
if (propertyInfo.GetValue(entity, null) != null) {
if (propertyInfo.PropertyType.BaseType != typeof(BaseEntity)) {
SaveProperty((BaseEntity)entity, propertyInfo);
}
else {
// **here**
SaveProperties(Activator.CreateInstance(propertyInfo.PropertyType));
}
}
}
}
ОднакоПроблема с моим текущим кодом заключается в том, что я создаю новый экземпляр для объектов свойств (см. Выделение), таким образом теряя все данные, которые были на исходном объекте.Как я могу рекурсивно перебрать все свойства объекта?Возможно ли это?
Пожалуйста, помогите.Заранее спасибо.