Comment puis-je sérialiser un objet qui a une interface comme une propriété?

J'ai 2 interfaces IA et IB.

public interface IA
{
    IB InterfaceB { get; set;  }
}

public interface IB
{
    IA InterfaceA { get; set;  }

    void SetIA(IA value);
}

Chacune des interfaces de références de l'autre.

Je suis en train de sérialiser ClassA comme défini ci-dessous.

[Serializable]
public class ClassA : IA
{
    public IB InterfaceB { get; set; }

    public ClassA()
    {
        //Call outside function to get Interface B
        IB interfaceB = Program.GetInsanceForIB();

        //Set IB to have A
        interfaceB.SetIA(this);
    }
}

[Serializable]
public class ClassB : IB
{
    public IA InterfaceA { get; set; }

    public void SetIA(IA value)
    {
        this.InterfaceA = value as ClassA;
    }
}

J'ai une erreur quand j'essaie trop sérialiser parce que le 2 propriétés sont des interfaces. Je veux sérialiser les propriétés.

Comment contourner ce problème?

J'ai besoin d'avoir des références dans chaque interface à l'autre. Et j'ai besoin d'être en mesure de sérialiser la classe d'avant en arrière.

OriginalL'auteur David Basarab | 2009-05-04