NotSupportedException bei Verwendung der List-Klasse in einem Steuerelement
-
Hallo,
ich will aus mehreren bestehenden Steuerelementen mir ein eigenes zusammenbauen. Unter anderem verwende ich dabei eine
List<Int32>
Wenn ich dieses Steuerelement dann verwende, erhalte ich eine
NotSupportedException
Zuvor wurde in der Entwurfsansicht eines Testprojekts die Liste mit Werten befüllt.
Hier noch etwas Code dazu
List<Int32> valueList = new List<Int32>(); ... public List<Int32> Values { get { return this.valueList; } set { this.valueList = value; } }
Im meinen Testprojekt erhalte ich dann an folgender Stelle eine Exception
this.comboBoxControl1.Values = ((System.Collections.Generic.List<int>)(resources.GetObject("comboBoxControl1.Values")));
Dieser Teil ist ein Windows Form-Designer generierter.
Welche Möglichkeit besteht sonst noch die Liste zu füllen. Bei Einer ComboBox erzeugt der Windows Form-Designer folgendes
this.comboBox1.Items.Add("4"); this.comboBox1.Items.Add("5");
Wie kann ich etwas ähnliches erreichen?
-
Ich weiß nicht konkret, woran das Problem liegt; eventuell lassen sich generische Listen einfach nicht vom Ressourcenmanager serialisieren.
Aber in jedem Fall ist dieser Code so nicht gut designed. Primär sollte es keinen Setter für die Liste geben sondern nur ein Getter, hierdurch brichst Du die Kapselung. Außerdem programmierst Du gegen eine konkrete Implementierung statt gegen eine Schnittstelle. Will sagen, der Typ 'List<T>' ist ein Implementierungsdetail. Deine Property sollte stattdessen eine Schnittstelle verwenden (z.B. 'IList<T>').
Ach so, und wieso verwendest Du überall 'System.Int32'? Konvention ist es in C#, die Schlüsselwort-Aliase zu verwenden, also hier 'int'.
-
Ich habe jetzt die IList-Schnittstelle aus System.Collections.Generic implementiert. Wie kann ich, ähnlich wie bei einer ComboBox, in der Entwurfsansicht unter
Eigenschaften-->Daten
die Möglichkeit bereitstellen, Werte hinzuzufügen? Bei mir erscheinen lediglich die Propertys
IsReadOnly
und
CountSchonmal besten Dank