簡單的方法有這樣.proto文件結構訪問協議緩衝區領域
{
session{
field1 = value;
field2 = value;
...
}
object1{
Object1field1 = value;
Object1field2 = value;
...
}
object1{
Object1field1 = value;
Object1field2 = value;
...
}
object2{
Object2field1 = value;
Object2field2 = value;
...
SubObject1{
SubObject1field1 = value;
SubObject2field2 = value;
...
}
} object2{
Object2field1 = value;
Object2field2 = value;
...
SubObject1{
SubObject1field1 = value;
SubObject2field2 = value;
...
}
}
} 簡單地說,有複雜的層次結構。 Object1或Object2例如可以是可重複的。是否有可能編寫通用方法將返回字段值作爲像int,布爾,字符串,日期時間或只是字符串的基礎對象?我想獲得由字符串字面下面的訪問:
public object GetFieldValue(int number, string fullPath)
凡FULLPATH可以這樣指定,例如:必要重複場
fullPath = "object1.Object1field1";
數量:數量可以等於0,第例如,「object1」和1代表第二個。還需要方法來獲得object1重複計數的字段名稱:
public int GetFieldCount(string fieldName)
而且也需要類似的方式訪問到子對象的嵌套級別。那可能嗎?是否有替代協議緩衝區硬編碼類?
你目前使用什麼協議緩衝庫? – 2012-04-13 23:10:04
似乎protobuf-csharp端口,他們給我pregenerated類和Google.ProtocolBuffers.dll我的項目。哪一個更適合這樣的任務?這兩個C#協議緩衝區庫文檔和示例都非常少。 – 2012-04-14 09:15:02
我還可以問:在我看來,這樣做的主要方法是反序列化數據,然後使用反射(或類似FastMember)來獲取名稱值。這是一個選項嗎?如果您不知道對象定義,則不能按名稱訪問,因爲protobuf不存儲名稱。 – 2012-04-14 10:16:35