【问题标题】:Convert TL Language (mtproto) type to C#将 TL 语言 (mtproto) 类型转换为 C#
【发布时间】:2016-05-25 10:20:35
【问题描述】:

我正在使用 tl 语言编译器来编译 C# 中 https://core.telegram.org/mtproto 中描述的 Telegram Api TL 语言的架构

有一个编译器可以将 tl 语言编译为 C# 类https://github.com/everbytes/SharpTL.Compiler

但它可以在这一行编译新的电报模式:

"params":[
    {"name":"flags","type":"#"},
    {"name":"report_spam","type":"flags.0?true"}]
,"type":"PeerSettings"}

它编译成错误的代码:

[TLObject(0x818426CD)]
public partial class PeerSettings : IPeerSettings
{
    [TLProperty(1)]
    public I# Flags { get; set; }

    [TLProperty(2)]
    public IFlags0?true ReportSpam { get; set; }

}

在 C# 代码中进行强制转换有什么解决方案吗?

我不知道 C# 中这个 "flags:#" 的类型是什么

https://core.telegram.org/mtproto/TL-formal中描述的这种类型“#”

user {flags:#} id:flags.0?string first_name:flags.1?string last_name:flags.2?string reserved3:flags.3?False reserved4:flags.4?False = User flags;

将来,flags 字段中的第 3 位和第 4 位可能会在更改 reserved3 和 reserved4 字段的名称和类型后用于传输新字段

【问题讨论】:

  • 该属性似乎是 IFlags 的可枚举:“public IFlags { get; set; }”给定“#”似乎定义了 IFlag 类型/值的集合。
  • flag# 是整数类型,用作标志来指示存在哪些标记字段(在接收时)或包含哪些标记字段(在发送时)

标签: c# telegram mtproto


【解决方案1】:

根据 TLGenerator,这意味着 int

【讨论】:

    【解决方案2】:
    peerSettings#818426cd flags:# report_spam:flags.0?true = PeerSettings  
    

    围绕这个深度搜索我认为这个哈希(#)意味着变量的动态值,在某些情况下它可以是真或假,另一种情况它可以是一个非负整数序列:

    matrix {X:Type} m:# n:# a:(%Tuple (%Tuple X m) n) = Matrix X;
    

    上面我们得到了 M 和 N 取整数随机值 > 0

    get_users req_fields:# ids:%(Vector int) = Vector %(User req_fields)
    

    在另一种情况下,它可以假设一个条件值
    req_fields 变量仅转换为 User 对象,但在其他情况下可以转换
    到另一种对象。

    也许这个 TLObject 在 c# 中的正确方法是:

    [TLObject(0x818426CD)]
    public partial class PeerSettings : IPeerSettings
    {
        [TLProperty(1)]
        public int Flags { get; set; }
    
        [TLProperty(2)]
        public bool ReportSpam { get; set; }
    
    }
    

    抱歉我的英语生疏了

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-02-20
      • 1970-01-01
      • 2015-09-26
      • 1970-01-01
      • 2014-06-07
      • 1970-01-01
      相关资源
      最近更新 更多