【发布时间】:2019-03-20 17:01:44
【问题描述】:
public interface IBase
{
int Id { get; set; }
}
public interface IDerivedA : IBase
{
int Name { get; set; }
int Quantity { get; set; }
}
public interface IDerivedB : IBase
{
string Name { get; set; }
IEnumerable<IDerivedA> DerivedBs { get; set; }
}
这是一个将被序列化的类的实现,但是当我尝试使用 DerivedASerialize 类时出现编译错误,该类是 IDerivedA的派生类> 界面
[MessagePack.Union(0, typeof(DerivedASerialize))]
[MessagePack.Union(1, typeof(DerivedBSerialize))]
[MessagePack.MessagePackObject(true)]
public class BaseSerialize : IBase
{
public int Id { get; set; }
public bool IsNull { get;set; }
}
[MessagePack.MessagePackObject(true)]
public class DerivedASerialize : BaseSerialize, IDerivedA
{
public int Name { get; set; }
public int Quantity { get; set; }
}
[MessagePack.MessagePackObject(true)]
public class DerivedBSerialize : BaseSerialize, IDerivedB
{
public string Name { get; set; }
public IEnumerable<DerivedASerialize> DerivedBs { get; set; }
}
有什么解决办法吗?因为我只能序列化类。
我想要另一个类,它也派生自同一个接口并具有不同的属性
使用 neuec 的 MessagePack。
编辑:向类添加序列化逻辑。
【问题讨论】:
-
属性“DeriveddBs”无法实现接口“IDerivedB”的属性。类型应为“IDerivedA”
-
你是如何序列化课程的?也向我们展示该代码
-
查看更新@bashrc
标签: c# inheritance serialization interface derived-class