如何从属性(例如ProtoIncludeAttribute)中获取ProtoBuf.Meta.MetaType Type it is mede?
例如,我们从以下位置创建了一个程序集:
[ProtoContract]
[ProtoInclude(TypeCode.MyClassChildCode, typeof(MyClassChild))]
public class MyClass {}
[ProtoContract]
public class MyClassChild: MyClass{}我们为我们的MyClassChild提供了ProtoBuf.Meta.MetaType。我们想从中得到TypeCode.MyClassChildCode。这样的事情怎么做?
发布于 2013-07-10 18:09:06
我不完全确定我是否理解了这个问题,但听起来你也是在问:
MetaType 使用的实际属性吗?
如果这就是问题所在,那么:MetaType不会显式跟踪这一点。属性中的信息用于配置MetaType,然后将其丢弃。例如,通过属性部分配置一个类型,然后通过代码应用一些调整(对于只有在运行时才知道的部分),这并不少见。不过,所有配置都可以在MetaType上使用。您提到了ProtoIncludeAttribute,这是子类型数据:一旦构造了MetaType,就可以通过.GetSubtypes()获得它。同样,还有.GetFields()和一系列用于类型级别配置选项(UseConstructor等)的属性。
有一些东西目前可能很难查询-代理和工厂跳到脑海中。
https://stackoverflow.com/questions/17567508
复制相似问题