2009-05-06 21 views
1

私は2つのプロジェクト:A/Bを持っています。プロジェクトAはB(論理項目)にobjbectsに結合されているリサイズのすべてを含むプロジェクトであるどのようにして、オブジェクトが別の(および参照されていない)アセンブリにあるクラスへの参照を取得できましたか?

A型 A.Formすることを目的とする

B型 B.Serializerの目的を有していますB.Logic

ここで、AはBへの参照を持ちますが、BにはAへの参照はありません.AFormにはBLogic型のメンバ変数が含まれています。ある時点で、すべてのデータがB.Logicに格納されると、B.Serializer(B.Logic)を呼び出してこのオブジェクトをディスクに保存しようとします。

A.Fromがシリアル化可能とマークされていないというエラーが表示されます。

しかし、プロジェクトBはA at ALLへの参照がなく、メンバーがA.Formを参照していてもコンパイルすべきではありません。

答えて

1

ここでの一般的な原因は、イベント()、または外部オブジェクトへの他の後方参照などです。あなたがいないシリアル化としてフィールドをマークすることができます。

[NonSerialized] 
    private SomeType foo; 

またはフィールドのようなイベントで:余談として

[field: NonSerialized] 
    public event EventHandler Bar; 

を - 記述から、私はあなたがBinaryFormatterを使用していると仮定します。個人的には、私はこれについて予約しています - very brittleです。私は何か非実装固有のことを示唆したいと思います。 XmlSerializerprotobuf-netJson.NETなど

+0

はい、Jon skeetが私をprotobuf-netに転送しましたが、私はそれを実装したいと思いますが、時間制約は少なくとももう1ヶ月は仕事にはあまりにも厳しいものです。私はそれが問題を引き起こし、あなたに戻ってくる出来事であるかどうかを見ます。 –

+0

あなたは、七面鳥の中のワシです。ありがとうございました。それは実際に連載されていた出来事でした。 –

関連する問題