2

我想知道表示应该包含 C# 键格式的这些字段的表的最佳方法是什么?

  • 字符串名字
  • 字符串姓氏
  • 字符串 电子邮件
  • bool 已注册
  • 日期时间日期加入
  • 字符性别
  • 列出<string> 收藏夹
  • 字符串城市
  • 字符串状态
  • unit16 邮编
  • 字符串国家
  • 列出<string>FrequentPagesURLs

我想有类似这种格式的东西

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

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

我不确定在 C# 键格式中使用它们在对象存储中创建表的最佳方式是什么charDateTimeList<string>

4

2 回答 2

2

根据 Bond 的官方文档,有以下几种类型:

基本类型:bool、uint8、uint16、uint32、uint64、int8、int16、int32、int64、float、double、string、wstring。

容器:blob、list、vector、set、map、可为空。

用户定义类型:枚举、结构或绑定,其中 T 是结构。

但是,如果您使用bond 生成C# 代码,该文档还解释了如何生成DateTime、char 等。那就是在您的 CLI 命令中使用以下内容:

gbc c# --using="DateTime=System.DateTime" date_time.bond

using 参数是放置类型别名的位置,例如“char=System.Char;DateTime=System.DateTime”。

我不知道这是否对您有足够的帮助,如果您需要其他任何东西,请告诉我。

资料来源:

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

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

于 2017-08-03T21:06:51.110 回答
2

我会将性别字段建模为枚举,因为这比字符更明确;DateTime 字段为uint64,但使用类型转换器将其转换为C# 中的 DateTime 结构;和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并使用类型转换器将其转换为C# 中的DateTimeOffset 结构,具体取决于您的需要

于 2017-08-04T00:31:16.610 回答