Я пишу свой собственный метод для преобразования графа объектов в пользовательский объект, поскольку JavaScriptSerializer выдает ошибки при нулевых значениях.
Итак, вот что у меня есть на данный момент:
internal static T ParseObjectGraph<T>(Dictionary<string, object> oGraph)
{
T generic = (T)Activator.CreateInstance<T>();
Type resType = typeof(T);
foreach (PropertyInfo pi in resType.GetProperties())
{
object outObj = new object();
if (oGraph.TryGetValue(pi.Name.ToLower(), out outObj))
{
Type outType = outObj.GetType();
if (outType == pi.PropertyType)
{
pi.SetValue(generic, outObj, null);
}
}
}
return generic;
}
Теперь запускается метод pi.SetValue()
и не выдает ошибку, но когда я смотрю на свойства generic
, все так же, как было до этого.
Первое свойство, через которое он проходит, является логическим, поэтому значения заканчиваются следующим образом.
generic = an object of type MyCustomType
generic.property = false
outObj = true
pi = boolean property
outType = boolean
Затем, после выполнения метода SetValue
, generic.property
по-прежнему устанавливается в false.