この質問の大部分はprotobuf-netのメンテナに直接送られますが、他の人はコメントしてください。
インターフェイスタイプを持つプロパティを含むクラスをシリアル化しようとしました。つまり、次のようになります。
[DataContract]
public class SampleDataClass
{
[DataMember(Order=1)]
public int Field1 { get; set; }
[DataMember(Order = 2)]
public IPayload Payload { get; set; }
}
[ProtoContract]
[ProtoInclude(1, typeof(Payload))]
public interface IPayload
{
int Field4 { get; set; }
}
[DataContract]
public class Payload : IPayload
{
[DataMember(Order = 1)]
public int Field4 { get; set; }
}
protobuf-netのv1のソースを変更することで、これを機能させることができました。インターフェイスにProtoIncludeが定義されている限り、このアプローチに問題はありませんでした。
明らかにこれをコンパイルするには、ProtoContractとProtoIncludeをインターフェイスに装飾することを許可する必要がありました。さらに、あちこちでいくつかの変更を加える必要がありました。(注:DataContract / KnowTypeを使用しますが、これらの属性はインターフェイスで装飾することもできません)
考えられる欠点についてコメントしていただけますか?