Доброе время суток всем метрам .Net.
Появилась проблема с которой не могу справиться сам

.
Необходимо добавить к компоненту колекци. Написал тестовый пример
все как бы правильно но после того как в дизайнере добавил элементы
колекции и зделал билд — колекция очистилась

и
элементы колекции в коде не создались. Атрибуты пропсисал,
конвертор тоже сделал, а в чом глюк не могу понять

. Перерыл уже все
что можно и в МСДН посмотрел, и на данном форуме, результат отрицательный

Буду благодарен за любую подсказку. Зарание спасибо!
вот пример кода:
// Компонент
public class TMComponent : Component
{
public TMComponent(){}
[DesignerSerializationVisibility(DesignerSerializationVisibility.Content)]
public TMCollection Parameters
{
get
{
if (FCollection == null)
return FCollection = new TMCollection();
else
return FCollection;
}
}
private TMCollection FCollection;
}
// Колекция
public class TMCollection : CollectionBase
{
public TMCollection(){}
public void Add (TMItem value)
{
this.List.Add(value);
}
public void Remove (int index)
{
this.List.RemoveAt(index);
}
public TMItem this[int index]
{
get{return ((TMItem)this.List[index]);}
set{ List[index] = value;}
}
public TMItem Element
{
get
{
if (FItem == null)
return FItem = new TMItem();
else return FItem;
}
set{FItem = value;}
}
private TMItem FItem;
}
// Элемент колекции
[TypeConverter(typeof(TMConvert)), Serializable()]
public class TMItem : Component
{
public TMItem(){}
public string Text
{
get{ return FText; }
set{ FText = value; }
}
public int Size
{
get{ return FSize; }
set{ FSize = value; }
}
private string FText;
private int FSize;
}
// Конвертор
public class TMConvert : TypeConverter
{
public override bool CanConvertTo(ITypeDescriptorContext context, Type destinationType)
{
if(destinationType == typeof(InstanceDescriptor))
{
return true;
}
return base.CanConvertTo (context, destinationType);
}
public override object ConvertTo(ITypeDescriptorContext context, System.Globalization.CultureInfo culture, object value, Type destinationType)
{
ConstructorInfo info;
TMItem element;
Type[] array_type;
object[] array_obj;
if(destinationType == typeof(InstanceDescriptor))
{
array_type = new Type[2];
array_type[0] = typeof(int);
array_type[1] = typeof(string);
info = typeof(TMItem).GetConstructor(array_type);
element = (TMItem)value;
array_obj = new object[2];
array_obj[0] = element.Size;
array_obj[1] = element.Text;
return new InstanceDescriptor(info, array_obj);
}
return base.ConvertTo (context, culture, value, destinationType);
}
}