Свойство SetValue возвращает TargetParameterCountException - PullRequest
0 голосов
/ 15 февраля 2019

TL; DR

У меня есть класс Type для XmlSerialize r, который бросает TargetParameterCountException на prop.SetValue().


Класс Type

Класс вызывается из моего списка Types

[System.Xml.Serialization.XmlArrayItemAttribute("Type", IsNullable = false)]
public List<Type> Types { get; set; }

и самого класса

[System.SerializableAttribute()]
[System.ComponentModel.DesignerCategoryAttribute("code")]
[System.Xml.Serialization.XmlTypeAttribute(AnonymousType = true)]
public partial class Type
{
    [System.Xml.Serialization.XmlAttributeAttribute()]
    public int TypeCode { get; set; }

    [System.Xml.Serialization.XmlAttributeAttribute()]
    public int NumberOfUnits { get; set; }
    public bool ShouldSerializeNumberOfUnits() { return NumberOfUnits > 0; }
}

Мое свойство Set Funktion

От: Ответ Xerillio на «Вставьте значения в класс без явной записи их»

Он предназначен для автоматической генерации полного класса со всеми подклассами, заполненными демонстрационными данными.

public static void SetDefaults(object testObj)
{
    PropertyInfo[] propertyInfos = testObj.GetType().GetProperties();
    foreach (PropertyInfo propertyInfo in propertyInfos)
    {
        if (propertyInfo.Name == "Count" || propertyInfo.Name == "Capacity" || propertyInfo.SetMethod == null)
        {
            continue;
        }

        var propType = propertyInfo.PropertyType;
        if (propType == typeof(int))
        {
            // [...]
        }
        else
        {
            var ctor = propType.GetConstructor(Type.EmptyTypes);
            var propertyObject = ctor.Invoke(new object[0]);
            SetDefaults(propertyObject);
            propertyInfo.SetValue(testObj, propertyObject);
        }
    }
}

Проблема

Теперь, если propertyObject записано и готово для установки в propertyInfo, то через TargetParameterCountException.
Может быть, это как-то связано со свойствами unset index и count, но я не могу найти что-нибудь по STFW.

Нужно ли где-либо устанавливать свойства count и index или делаетесть проблема с ShouldSerialize... Переменной?

...