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...
Переменной?