Azi*_*uth 5 c# class telegram-bot
我正在用C#开发一个Telegram机器人但是在实现Message
类型方面有困难.根据API文档,chat
字段可以是类型User
或类型GroupChat
.我如何在C#中实现它?
到目前为止,我只能使用以下代码提出以下代码Newtonsoft.Json
:
public class Update {
....
[JsonProperty("chat")]
public User chat { get; set; }
[JsonProperty("chat")]
public GroupChat group_chat { get; set; }
....
}
Run Code Online (Sandbox Code Playgroud)
但它不能用我的WebAPI 2控制器方法,因为我Message
使用FromBody
属性反序列化:
public async Task<HttpResponseMessage> Post(string token, [FromBody] Update update)
Run Code Online (Sandbox Code Playgroud)
(类型Update
具有字段message
类型的Message
)
有没有更好的方法来实现Message
类型?
由于您应该在一个字段中处理看似两个完全不同的对象,因此我认为您不能使用强类型对象,但您可以在聊天字段中使用动态类型,例如
public class Telegram
{
public int message_id { get; set; }
public dynamic chat { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
然后你可以访问变量并检查它们是否为空或不了解它是用户还是群聊:
static void Main(string[] args)
{
string json = @"{ ""chat"": { ""id"": 1, ""first_name"": ""my_first_name"", ""last_name"": ""my_last_name"", ""username"": ""my_username"" }, ""message_id"": 123 }";
var telegram = Newtonsoft.Json.JsonConvert.DeserializeObject<Telegram>(json);
string name = telegram.chat.first_name; // name = my_first_name
string title = telegram.chat.title; // title = null
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
3185 次 |
最近记录: |