2013-07-10 55 views
1

如何從ProtoBuf.Meta.MetaTypeType得到它是屬性mede(例如ProtoIncludeAttribute)?如何從ProtoBuf.Meta.MetaType獲取類型它是mede從屬性?

例如我們從創建的組件:

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

[ProtoContract] 
public class MyClassChild: MyClass{} 

我們有ProtoBuf.Meta.MetaType我們MyClassChild。我們想從中獲得TypeCode.MyClassChildCode。如何做這樣的事情?

+0

看起來好像「ProtoBuf.Meta.MetaType」從「ProtoIncludeAttribute」屬性中清除了它的「ProtoBuf.Meta.MetaType.Type」 – DuckQueen

+0

您能否澄清/重新提出問題?我根本不明白你想問什麼。我幾乎可以肯定*回答它,但我需要先理解這個問題。 –

回答

0

我不完全肯定,我理解的問題,但它聽起來你的要求之一:

  • 我可以告訴是否MetaType從屬性手工製作
  • ,VS
  • 或:我能使用

,實際的屬性如果/那是/是問題(S),則:MetaType確實沒有明確地跟蹤這一點。來自屬性的信息用於配置MetaType,然後被丟棄。例如,通過屬性部分配置一個類型,然後通過代碼應用一些調整(對於僅在運行時已知的部分),這並不少見。不過,所有的配置都可以在MetaType上找到。您提到ProtoIncludeAttribute,這是子類型數據:一旦構建了MetaType,則可以通過.GetSubtypes()獲得。同樣,還有.GetFields()以及類型級別配置選項(UseConstructor等)的一系列屬性。

一些片斷,這可能是棘手的查詢目前 - 代理人和工廠飛躍在腦海中。

+0

添加問題更新\說明。 – DuckQueen