MarioR
Mitglied
Hallo,
ich möchte eine Property (List<irgendwas>) mit
SetValue() setzen, aber die Property bleibt immer leer?
Damit kann ich diese diese Eigenschaft im PropertyGrid editieren.
Das schreiben in eine Parameterdatei geht auch
erzeugt folgende XML
das lesen geht geht auch
(1) die Liste wird richtig erzeugt
(2) die Zuweisung funktioniert nicht, Warum ?
gruß Mario
ich möchte eine Property (List<irgendwas>) mit
SetValue() setzen, aber die Property bleibt immer leer?
Code:
// Ausschnitt aus der Settings-Klasse
...
private List<Int16> intTest;
[Category("Test"),
DisplayName("IntegerTestList"),
Description(""),
public List<Int16> IntTest
{
get { return intTest; }
set { intTest = value;}
}
...
// Im Constructor
...
intTest = new List<System.Int16>();
...
Damit kann ich diese diese Eigenschaft im PropertyGrid editieren.
Das schreiben in eine Parameterdatei geht auch
Code:
// Ausschnitt aus der SaveRoutine
...
xmlSubNode = configXml.CreateNode(System.Xml.XmlNodeType.Element, null, "valuelist", null);
if (property.PropertyType == typeof(List<System.Int16>))
{
foreach (System.Int16 item in (List<System.Int16>)property.GetValue(this, null))
{
listItem = configXml.CreateNode(System.Xml.XmlNodeType.Element, null, "listitem", null);
listItem.InnerText = item.ToString().Trim();
xmlSubNode.AppendChild(listItem);
}
}
...
erzeugt folgende XML
Code:
<setting name="IntTest" serializeAs="List`1">
<valuelist>
<listitem>1</listitem>
<listitem>2</listitem>
<listitem>3</listitem>
</valuelist>
</setting>
das lesen geht geht auch
Code:
// Ausschnitt aus der Load-Routine
...
object wert;
if (property.PropertyType == typeof(List<System.Int16>))
{
List<System.Int16> list = new List<System.Int16>();
System.Int16 item;
foreach (System.Xml.XmlNode itemNode in configItem.ChildNodes)
{
if (System.Int16.TryParse(itemNode.InnerText, out item))
list.Add(item);
}
wert = list; //<<<<<<< (1)
property.SetValue(this, wert, null); //<<<<< (2)
}
...
(1) die Liste wird richtig erzeugt
(2) die Zuweisung funktioniert nicht, Warum ?
gruß Mario