Я стремился сделать свое приложение немного более масштабируемым, указав базовую модель данных, которую я намерен выполнять в качестве контейнера, чтобы данные, передаваемые в другое приложение, всегда имели правильную структуру.
Однако я хочу, чтобы в будущем я мог легко загружать данные из таких источников, как XML и базы данных, поэтому мне было интересно, как перейти к копированию значений одного объекта в объект базовой модели данных, где объект, который я копирую, значения из могут иметь разную структуру (поэтому я в основном просто хочу сопоставить имена свойств).
Вот что я попробовал:
public Dictionary<string, object> ObjectValues(object source)
{
if(source == null)
return null;
Dictionary<string, object> properties = new Dictionary<string, object>();
foreach (PropertyInfo propInfo in source.GetType().GetProperties())
{
try
{
object value = propInfo.GetValue(source, null);
properties.Add(propInfo.Name, value);
if (!value.GetType().IsPrimitive && !value.GetType().IsValueType)
{
Dictionary<string, object> internalProperties = ProxyValues(value);
if (internalProperties != null)
foreach (KeyValuePair<string, object> internalProp in internalProperties)
properties.Add(String.Format("{0}.{1}", propInfo.Name, internalProp.Key), internalProp.Value);
}
}
catch (TargetParameterCountException) { }
}
return properties;
}
Спасибо,
Алекс.