2011-06-09 5 views
0

私は私がこれを行うと、私はシリアル化のエラーを取得しています、セッション中に従業員(DBベース)のストアオブジェクトにしようとしている「セッション状態をシリアル化することができません。 『は、StateServer』は」C#の直列化エラー

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

MyValidationResultをシリアル化しようとしているときに起こっていることがわかりました。これはどのように修正するのですか?

+0

'ValidationResult'がSerializableかどうかチェックしましたか? –

+0

シリアライズ可能であるとマークされていません – kayak

答えて

2

NonSerializedAttributeを使用できます。バッキングフィールドを追加し、自動実装されたプロパティを使用せず、フィールドにNonSerializedAttributeを追加してください。

+0

それはうまくいった、理由を教えていただけますか? – kayak

+0

この属性はシリアライザにそのフィールドのシリアル化を試みないように指示します。つまり、ValidationResultまたはそのメンバーの1つがおそらくシリアル化可能とマークされていません。 –

1

ValidationResultには、パラメータのないコンストラクタがないため、シリアル化できません。セッション状態で検証を保存する必要がある場合は、別のクラスを用意する必要があります。必要がない場合は、プロパティにNonSerialized属性を適用します。