PropertyInfo.SetValue() не работает, но ошибок нет

Я пишу свой собственный метод для преобразования графа объектов в пользовательский объект, поскольку 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.

5
задан James Hay 14 March 2012 в 00:44
поделиться