Also, ich habe inzwischen selbst etwas herausgefunden. Mit generischen Listen klappt es offenbar mit Hausmitteln nicht. VS2005 verwendet für Arrays jedoch einen eigenen Designer, der sich der Einfachheit halber auch ArrayEditor nennt und in System.ComponentModel.Design zu finden ist.
Der Knackpunkt für mich war, aus List eine eigene Collection zu definieren:
// kapselt eine List
public class iComboBoxItemCollection : IList, ICollection, IEnumerable
{...}
Die entsprechenden Eigenschaften und Methoden der Interfaces sind schnell implementiert.
Nun braucht man für diese Collection einen eigenen Designer, der sich vom Standard CollectionEditor ableitet:
public class iComboItemCollectionEditor : System.ComponentModel.Design.CollectionEditor
{
public iComboItemCollectionEditor(Type type)
: base(type)
{
}
protected override bool CanSelectMultipleInstances()
{
return false;
}
protected override Type CreateCollectionItemType()
{
return Type.GetType("Interlook.Utils.iComboBoxItem");
}
protected override object[] GetItems(object editValue)
{
if (editValue is iComboBoxItemCollection)
{
iComboBoxItemCollection source = (iComboBoxItemCollection)editValue;
object[] result = new object[source.Count];
for (int i = 0; i ((source.Text!=null) && (source.Text.Length \> 0)) ? source.Text : "leer";
return result;
}
}
Man muss dabei einen Verweis auf die System.Design.dll zum Projekt hinzufügen.
Jetzt ist nur noch wichtig, dass man die iComboBoxItemCollection Klasse (s.o.) mit folgendem Attribut definiert:
[EditorAttribute(typeof(Interlook.Utils.iComboItemCollectionEditor),
typeof(System.Drawing.Design.UITypeEditor))]
Dann klappt es im Designer. Vielleicht hilft das ja jemandem, der mal ein ähnliches Problem haben sollte