При попытке открыть форму (System.Windows.Forms) в режиме дизайнера появляется сообщение об ошибке: Unable to load type System.Collections.Generic.List`1[[JupiterControlLibrary.ReferenceParameter, JupiterControlLibrary, Version=1.0.2665.20165, Culture=neutral, PublicKeyToken=null]] required for deserialization.
На форме использован мой компонент (JupiterControlLibrary.DataReference) у которого есть свойство [Category("Data Reference")]
[ReadOnly(false)]
[Browsable(true)]
public List<JupiterControlLibrary.ReferenceParameter>{get;set;}
Когда значение свойства не задано — ошибка не возникает.
Фрагмент кода в котором возникает ошибка:
private void InitializeComponent ()
{
........
this.dataReference1.ParentParameters = ((System.Collections.Generic.List<JupiterControlLibrary.ReferenceParameter>)(resources.GetObject("dataReference1.ParentParameters")));
........
}
Сборка компилируется, запускается, работает нормально.
Ошибка возникает при повторном открытии формы в режиме дизайнера.
В чем тут проблема?
Re: Ошибка загрузки значения свойства в DesignMode
Здравствуйте, muse, Вы писали:
M>Здравствуйте, Inquisitive, Вы писали:
I>>В чем тут проблема?
M>Сделай ReferenceParameter сериализуемым. M>Примерно так:
Спасибо, помогло.
Не думал, что надо наследовать интерфейс ISerializable.
Думал, что наличие атрибута Serializable обеспечит сериализацию (по крайней мере public свойств).
Непонятно, почему проблема была только в момент разработки. Ведь приложение раболтало.
Re[2]: Ошибка загрузки значения свойства в DesignMode
Здравствуйте, muse, Вы писали:
M>Здравствуйте, Inquisitive, Вы писали:
I>>В чем тут проблема?
M>Сделай ReferenceParameter сериализуемым. M>Примерно так:
Потом все возвращается.
Например, после закрітия и повторного запуска VS
Re[2]: Ошибка загрузки значения свойства в DesignMode
Все почти нормально, я просто не полностью использовал Ваш пример, не указал атрибут [NonSerialized] в декларации private — поля.
После указания атрибута, проблема, в общем, разрешилась,
но...: если закрыть солюшин с активным дизайнером той формы — на которой находится компонент,
а потом открыть то, ВС2005 при попытке показать дизайнер снова выдает эту ошибку.
Если закрыть дизайнер с ошибкой и открыть снова — все нормально.
Большое спасибо за помощь!
Но всеравно непонятно, почему в рантайме все работало (ресурс считывался, де-сериализовался, ....),
а для нормальной работы дизайнера потребовалось наследовать ISerializable?