2017-05-13 6 views
0

protobuf-netを使用してシリアル化するデータコントラクトがあります。それらをリファクタリングと同様に、基本クラスにいくつかのプロパティを移動することを決定protobuf-netを使用してメンバーを安全に基本クラスに移動する方法

[ProtoContract]  
public class Cat 
{ 
    [ProtoMember(1)] 
    public Friend[] Friends { get; set; } 
} 

最終時間:この後

[ProtoContract]  
public class Cat : Animal 
{ 
    // other props 
} 

public abstract class Animal 
{ 
    [ProtoMember(1)] 
    public Friend[] Friends { get; set; } 
} 

私はプロパティ友人が前seralizedデータからデシリアライズではないことがわかりました。変更を壊さずにこのようなリファクタリングを実行するにはどうすればよいですか?

答えて

0

私はこれを確認するためにPCでないんだけど、あなたは追加を試みることができる:

[ProtoPartialMember(1, "Friends")] 

Catのクラス定義に。これがうまくいかない場合は、試して次のことは、次のようになります。

RuntimeTypeModel.Default[typeof(Cat)] 
.Add(1, " Friends "); 

これらの作業のいずれも、私が知っていると私は私は良いオプションを見つけることができます場合は

(シリアライズ前)

[ProtoMember(1)] 
public new Friend[] Friends { 
    get { return base.Friends;} 
    set { base.Friends = value; } 
} 
+0

応答をありがとう:平面上に:)

最悪の場合には、部材再宣言することですありません。私はProtoPartialMemberの問題を解決できませんが、RuntimeTypeModelは機能します。データアノテーションでこれを行う方法はありますか? – Skyliver

関連する問題