2017-08-03 118 views
2

我想知道什麼是最好的方式來表示應該包含C#債券格式的這些字段的表?C#債券中可用的數據類型是什麼?

  • 串名字
  • 串名字
  • 串電子郵件
  • 布爾註冊
  • 日期時間DateJoined
  • 焦炭性別
  • 列表<串>收藏
  • 串城
  • 串國家
  • unit16郵編
  • 串國家
  • 列表<串> FrequentPagesURLs

而且我希望有類似格式的東西

namespace MyProject 
{ 
    struct Key 
    { 
     0: required string Email; 
    } 

    struct Value 
    { 
     0: required string FirstName; 
     1: optional char Gender; 
     . 
     . 
     . 
    } 
} 

我不知道代表char,DateTime和的最佳方式是什麼3210以C#bond格式用於在Object store中創建表格。

回答

2

根據對債券的正式文件中,有以下幾種類型:

基本類型:BOOL,UINT8,UINT16,UINT32,UINT64,INT8,INT16,INT32,Int64的,浮動,雙,字符串,wstring。

容器:blob,list,vector,set,map,nullable。

用戶定義類型:enum,struct或bonded其中T是一個結構。

但是,該文檔還解釋瞭如何使用bond生成C#代碼以生成DateTime,char等。這是使用您的CLI命令如下:

GBC C#--using = 「日期時間= System.DateTime的」 date_time.bond

的使用參數是你把類型的別名,如作爲「char = System.Char; DateTime = System.DateTime」。

我不知道這是否對您有充分的幫助,請讓我知道您是否需要其他東西。

來源:

https://microsoft.github.io/bond/manual/compiler.html

https://microsoft.github.io/bond/manual/bond_cs.html

+0

我在生成DateTime,char等部分中感到非常困惑。 我不知道如何以我上面提到的格式在架構文件中編寫它。 如果您可以提供示例給出我需要創建的表格,那將會非常棒。 –

+0

關於[如何表示'TimeSpan']存在一個存在的問題(https://stackoverflow.com/questions/39492730/implementing-an-equivalent-of-c-sharp-timespan-in-microsoft-bond)到[DateTime的示例](https://github.com/Microsoft/bond/tree/master/examples/cs/core/date_time)。 – chwarr

2

我的性別字段建模爲一個枚舉,因爲這是不是一個char更加明確;將DateTime字段設置爲uint64,但使用a type converter將其變爲a DateTime struct in C#;和List<string>字段作爲vector<string>

namespace MyProject; 

using DateTime=uint64; 

enum Gender 
{ 
    Unspecified; 
    ... 
} 

struct Favorite { ... } 
struct FrequentPagesURL { ... } 

struct SomeType 
{ 
    ... 
    7: DateTime DateJoined; 
    8: Gender Gender = Unspecified; 
    9: vector<Favorite> Favorites; 
    ... 
    17: vector<FrequentPagesURL> FrequentPagesURLs; 
    ... 
} 

你可能要考慮造型DateJoined字段作爲string/blob和使用的類型轉換器把它變成一個DateTimeOffset struct在C#中,depending on your needs