C# 如何序列化接口(protobuf-net)?
要序列化在另一个dll中声明的SomeClass中包含的SomeInterface。还有这个接口的实现C# 如何序列化接口(protobuf-net)?,c#,serialization,protobuf-net,C#,Serialization,Protobuf Net,要序列化在另一个dll中声明的SomeClass中包含的SomeInterface。还有这个接口的实现 public interface SomeInterface { SomeClass Instance { get; } } public class BasicClass : SomeInterface { public BasicClass(SomeClass instance) { Instance = instance; }
public interface SomeInterface
{
SomeClass Instance { get; }
}
public class BasicClass : SomeInterface
{
public BasicClass(SomeClass instance)
{
Instance = instance;
}
public SomeClass Instance { get; }
public override string ToString()
{
return Instance.ToDisplayString();
}
}
若使用代理项,则不能对接口使用隐式运算符
这些任务的protobuf工具是什么?接口没有实现,即没有数据或实例。没有要序列化的内容。您是否试图解决一个不同的问题,并认为“序列化”接口是某种解决方案?当有人试图给一个类多个角色时,通常会问您这个问题。您的业务层中可能有一个类层次结构,并尝试传输这些层次结构。不要那样做。保护它们及其结构,并改用DTO。通过这样做,您的层之间也会产生松散耦合。@jgauffin我不明白使用DTO的结构意味着什么。我在哪里可以读到这些,看一些例子?您应该能够使用
RuntimeTypeModel.Default.Add(typeof(isomointerface),true.AddSubType(50,typeof(BasicClass))代码>在启动时显示在顶级项目中,如中所示。
[ProtoContract]
class SomeInterfaceSurrogate
{
[ProtoMember(1)] public int Id { get; set; }
public static implicit operator SomeInterface(SomeInterfaceSurrogate value)
{
return value == null ? null : GetInstanceForId(int id);
}
public static implicit operator SomeInterfaceSurrogate(SomeInterface value)
{
return value == null ? null : new SomeInterfaceSurrogate()
{
Id = value.GetId()
};
}
}