2011-06-09 4 views
0

Я пытаюсь сохранить объект Employee в сессии (DB Based), Когда я делаю это я получаю ошибку сериализации «Невозможно сериализацию состояния сеанса. В" StateServer»C# ошибка Сериализации

[Serializable] 
public class Employee 
{ 
    ... 
public List<System.ComponenetModel.DataAnnotation.ValidationResult> MyValidationResult 
    { get; set; } 
} 

Я понял, что это происходит, когда он пытается сериализовать MyValidationResult, это происходит, любая идея, как его исправить?

+0

Вы проверили, является ли «ValidationResult» Serializable? –

+0

Не помечено как serializable – kayak

ответ

2

Вы можете использовать NonSerializedAttribute. Добавьте поле резервной копии и не используйте свойство автоматически реализованное и добавьте NonSerializedAttribute в поле, и вам должно быть хорошо идти.

+0

Это сработало. Не могли бы вы объяснить причину? – kayak

+0

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

1

ValidationResult не может быть сериализован, потому что у него нет конструктора без параметров. Если вам нужно сохранить проверки в состоянии сеанса, вам придется придумать другой класс. Если вам это не нужно, примените атрибут NonSerialized к свойству.

Смежные вопросы