1

それから取得する方法ProtoBuf.Meta.MetaType Typeは、属性から作成されます(ProtoIncludeAttributeたとえば)?

たとえば、以下からアセンブリを作成しました。

[ProtoContract]
[ProtoInclude(TypeCode.MyClassChildCode, typeof(MyClassChild))]
public class MyClass {}

[ProtoContract]
public class MyClassChild: MyClass{}

私たちは私たちProtoBuf.Meta.MetaTypeのために持っていますMyClassChild。そして、そこから抜け出したいのですTypeCode.MyClassChildCode。そのようなことをする方法は?

4

1 に答える 1

0

質問を理解しているかどうかは完全にはわかりませんが、次のいずれかを尋ねているようです。

  • MetaTypeaが属性から作成されたのか、手作業で作成されたのかを見分けることはできますか
  • または: 使用された実際の属性を取得できますか

それ/それらが質問である場合、:MetaTypeはこれを明示的に追跡しません。アトリビュートからの情報は、 の設定に使用され、MetaTypeその後破棄されます。たとえば、属性を使用して型を部分的に構成し、コードを使用して微調整を適用することは珍しくありません (実行時にのみ認識される部分)。ただし、すべての設定は で利用できMetaTypeます。ProtoIncludeAttributeサブタイプ データであるについて言及しました。MetaTypeが構築されると、これは を介し​​て利用可能になります.GetSubtypes()。同様に.GetFields()、タイプ レベルの構成オプション (UseConstructorなど) の一連のプロパティがあります。

現時点でクエリを実行するのが難しい部分がいくつかあります - サロゲートとファクトリが思い浮かびます。

于 2013-07-10T10:09:05.630 に答える