タイプを反映してRuntimeTypeModelを動的に作成しています。タイプを振り返るとき、私はその各プロパティを見て、(独自のメカニズムを使用して)タグを決定し、それをに追加しMetaType
ます。また、プロパティのタイプが、protobuf-netによってネイティブにシリアル化できるプリミティブではなく、ネストされたメッセージであるかどうかを判断する必要があります。これにより、そのタイプも再帰的に処理して、モデルに追加し、 protobuf-netによってシリアル化可能な外部タイプ。
たとえば、次のタイプについて考えているとします。
public class Foo
{
public int Number { get; set; }
public string Text { get; set; }
public Bar InnerMessage { get; set; }
}
public class Bar
{
TimeSpan Duration { get; set; }
}
シリアル化するように求められました。Foo
各プロパティのタイプごとに、新しいものとしてモデルに追加する必要があるかどうかを判断する必要がありMetaType
ます。明らかに、、int
およびstring
タイプTimeSpan
はモデルに追加する必要はありませんが、追加する必要がBar
あります。プログラムでこの区別をするにはどうすればよいですか?switch
このロジックを(ブロックまたはif
-else
チェーンで)ハードコーディングする必要がありますか?もしそうなら、protobuf-net r480はネイティブにどのタイプをサポートしますか(つまり、それらをモデルに追加すると、 「このタイプのデータには動作が組み込まれているため、この方法でモデルに追加することはできません」ArgumentException
という記述がスローされます)?