Dav*_*rab 8 c# serialization interface
我有2个接口IA和IB.
public interface IA
{
IB InterfaceB { get; set; }
}
public interface IB
{
IA InterfaceA { get; set; }
void SetIA(IA value);
}
Run Code Online (Sandbox Code Playgroud)
每个接口引用另一个.
我正在尝试按以下定义序列化ClassA.
[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;
}
}
Run Code Online (Sandbox Code Playgroud)
我尝试过序列化时出错,因为2个属性是接口.我想序列化属性.
我怎么能绕过这个?
我需要在每个接口中引用另一个接口.我需要能够来回序列化这个类.
Eri*_*bal 10
您的代码中有各种错误,否则这样可以正常工作.
ClassA,您正在设置局部变量IB,而不是对象的IB对象.ClassB,您将回退到对象具体类,而不是将其作为接口类型.以下是您的代码应如下所示:
public interface IA
{
IB InterfaceB { get; set; }
}
public interface IB
{
IA InterfaceA { get; set; }
void SetIA(IA value);
}
[Serializable]
public class ClassA : IA
{
public IB InterfaceB { get; set; }
public ClassA()
{
// Call outside function to get Interface B
this.InterfaceB = new ClassB();
// 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;
}
}
[STAThread]
static void Main()
{
MemoryStream ms = new MemoryStream();
BinaryFormatter bin = new BinaryFormatter();
ClassA myA = new ClassA();
bin.Serialize(ms, myA);
ms.Position = 0;
ClassA myOtherA = bin.Deserialize(ms) as ClassA;
Console.ReadLine();
}
Run Code Online (Sandbox Code Playgroud)