オブジェクトは、異なる(および参照されていない)アセンブリにあるクラスへの参照をどのように取得できますか?

StackOverflow https://stackoverflow.com/questions/831835

質問

2つのプロジェクトがあります:A / B。プロジェクトAは、Bのオブジェクトにバインドされているすべてのwinform(論理アイテム)を含むプロジェクトです

Aにはタイプのオブジェクトがあります A.Form

Bにはタイプのオブジェクトがあります B.シリアライザー B.Logic

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

この時点で、A.Fromがシリアル化可能としてマークされていないことを示すシリアル化時にエラーが発生します。

しかし、プロジェクトBにはAへの参照がまったくありません。たとえA.Formを参照するメンバーがSOMEHOWに含まれていたとしても、コンパイルすることはできません。

役に立ちましたか?

解決

ここでの通常の犯人は、イベント( B.Logic 内)、または外部オブジェクトへの他の後方参照などです。フィールドをシリアル化しないようにマークできます:

    [NonSerialized]
    private SomeType foo;

またはフィールドのようなイベントの場合:

    [field: NonSerialized]
    public event EventHandler Bar;

余談ですが、説明では、 BinaryFormatter を使用していると想定しています。個人的に、これについては予約があります-非常に脆い 。実装固有ではない何かを提案します。 XmlSerializer protobuf-net Json.NET など

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top