私はProtobuf-netを使ってカスタムネストされたリストをシリアル化しています。ネイティブリストを直接ネストすることはできないことを理解しています。そのため、内側のリストにコンテナオブジェクトを使用しています。しかし、私はまた私のコンテナはIEnumerableをオブジェクトをしたいと思いますが、これはいるProtobufネットがエラーでそれを投げる意味:ここでProtobuf-net:ネストされたIEnumerableオブジェクト
Nested or jagged lists and arrays are not supported
はエラーが発生私のリスト構造の例である:
[ProtoContract]
public class MyOuterList<T>
{
[ProtoMember(1)]
readonly List<MyInnerList<T>> nestedData = new List<ObjectList<T>>();
}
[ProtoContract]
public class MyInnerList<T> : IEnumerable<T>
{
[ProtoMember(1)]
private readonly List<T> data = new List<T>();
}
修正プログラムはIEnumerableをMyInnerList
から削除しますが、明らかに直接反復可能であることはありません。使用することができる[ProtobufCustomObjectSoPleaseIgnoreIEnumerable]
のような卑劣な属性はありますか?
私が今まで考え出してきた最良の選択肢は、以下に示すようにEnumerableプロパティを使用することですが、プロパティがまだリストに再びキャストされる可能性があることを恐れています。私はGetEnumerator/yield
何らかの形で使用することを好むだろうが、私はどのように見ることができません。
[ProtoContract]
public class MyInnerList<T>
{
[ProtoMember(1)]
private readonly List<T> data = new List<T>();
public IEnumerable<T> Data
{
get { return this.data; }
}
}
完璧、多くのおかげです。私はどこを見ているべきかわからなかった。 –
この問題を解決するにはまだ問題があります。問題はここに投稿されています:https://code.google.com/p/protobuf-net/issues/detail?id=287&q=IgnoreListHandling –
@shakinfree k; –