Некоторая ошибка, возможно при просмотре формы Windows в конструкторе - PullRequest
0 голосов
/ 24 июня 2009

Я хоть и решил эту проблему, но она вернулась:

Ошибка генерации кода для свойства SelectedPeople. Ошибка была: «Тип« ECS.Entities.Persistency.Person »в сборке« ECS, версия = 1.0.0.0, культура = нейтральная, PublicKeyToken = ноль »не помечена как сериализуемая. '

Свойство в сообщении об ошибке - это List (Of Person), и по какой-то причине оно вызывает эту ошибку, практически для всего, что я делаю, и это действительно раздражает.

Хорошо, отвечая на ответы, вы получите немного больше информации о проблеме.

Да, это во время разработки, это происходит в основном в любое время, когда открытая форма имеет UserControl, который содержит свойство Selected, иногда это происходит, даже если я не фокусируюсь на форме, также, если я пытаюсь это происходит, когда происходит компиляция / запуск, и сообщение приходит в форме окна сообщения, в котором просто OK, ECS.Entities.Persistency.Person - это просто класс, сгенерированный LINQ to SQL, это не должно иметь никакого значения для проблемы, хотя я имею добавлен атрибут перед публикацией.

Причина, по которой это происходит, заключается в том, что Дизайнер пытается поместить свойство в Панель свойств, и для этого происходит сериализация. Чтобы помочь в этом, я попытался скрыть свойство от дизайнера, используя эти атрибуты.

<DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)> _
    <Browsable(False)> _
    Public Property SelectedPeople() As List(Of Person)
        Get
            Return _SelectedPeople
        End Get
        Set(ByVal value As List(Of Person))
            _SelectedPeople = value
        End Set
    End Property

Раньше это работало, но по какой-то неизвестной причине оно началось снова.

Если вы все знаете что-нибудь о том, как это исправить, я буду признателен.

Спасибо

Ответы [ 3 ]

1 голос
/ 25 июня 2009

Дизайнер не всегда дает точные сообщения об ошибках. Когда дизайнер выдает такую ​​ошибку, часто лучше посмотреть, что именно вы недавно изменили на элементе управления. Вполне вероятно, что это не имеет ничего общего с заявленным сообщением об ошибке.

Кроме того, дизайнер иногда попадает в плохое состояние и выдает сообщения об ошибках. Иногда перезапуск и восстановление проясняют ситуацию.

1 голос
/ 24 июня 2009

Похоже, вам нужно добавить атрибут Serializable в ECS.Entities.Persistency.Person.

Это будет выглядеть примерно так:

<Serializable()> _
Class Person
    'Class definition here
End Class
0 голосов
/ 28 июля 2009

В случае, если кто-то столкнется с этой же проблемой и не сможет заставить ее работать даже после перестройки проекта, я исправил ее после замены этой отсутствующей строки в методе InitializeComponent () в Form1.Designer.cs:

System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(Form1));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...