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

我不完全确定我理解这个问题,但听起来你在问:

  • 我可以判断 aMetaType是由属性还是手工制作的
  • 或者:我可以得到使用的实际属性吗

如果那个/那些是/是问题,那么:MetaType不明确跟踪这个。来自属性的信息用于配置MetaType,然后被丢弃。例如,通过属性部分配置类型,然后通过代码应用一些调整(对于仅在运行时知道的部分),这种情况并不少见。不过,所有配置都可以在MetaType. 您提到ProtoIncludeAttribute,这是子类型数据:一旦MetaType构建了 ,就可以通过.GetSubtypes(). 同样,还有.GetFields(), 和一系列用于类型级配置选项(UseConstructor等)的属性。

目前有些部分可能很难查询 - 代理人和工厂跃入脑海。

于 2013-07-10T10:09:05.630 回答