C# 无效令牌';事件';在类、记录、结构或接口成员声明中
我从slack获得了带有事件属性的post响应,所以我想用下面的代码为事件创建模型C# 无效令牌';事件';在类、记录、结构或接口成员声明中,c#,asp.net-core,.net-core,C#,Asp.net Core,.net Core,我从slack获得了带有事件属性的post响应,所以我想用下面的代码为事件创建模型 public Event event { get; set; } //getting error here public class Event { public string type { get; set; } public string user { get; set; } public string text {
public Event event { get; set; } //getting error here
public class Event
{
public string type { get; set; }
public string user { get; set; }
public string text { get; set; }
public string ts { get; set; }
public string channel { get; set; }
public string event_ts { get; set; }
}
'''
got error in declaring event as name
由于
event
在C#中是一个保留关键字,因此您需要告诉编译器这并没有使用该关键字。您可以使用@
进行以下操作:
public Event @event { get; set; }
(顺便提一下:这在视图代码中最常见,我们需要一个匿名对象来拥有CSS规则的class
属性。)
但是,如果可能,建议您在JSON序列化/反序列化中维护C#命名约定并在这些约定之间进行转换。根据您执行该任务的方式,有不同的方法,例如使用属性或自定义序列化程序 使用
Event
作为类名也可能不太理想。尽量做到描述性,避免与语言中的任何共同点发生冲突。您的自定义代码可能类似于:
public ChatEvent Event { get; set; }
//...
public class ChatEvent
{
public string Type { get; set; }
public string User { get; set; }
public string Text { get; set; }
public string Ts { get; set; }
public string Channel { get; set; }
public string Event_ts { get; set; }
}
由于
event
在C#中是一个保留关键字,因此您需要告诉编译器这并没有使用该关键字。您可以使用@
进行以下操作:
public Event @event { get; set; }
(顺便提一下:这在视图代码中最常见,我们需要一个匿名对象来拥有CSS规则的class
属性。)
但是,如果可能,建议您在JSON序列化/反序列化中维护C#命名约定并在这些约定之间进行转换。根据您执行该任务的方式,有不同的方法,例如使用属性或自定义序列化程序 使用
Event
作为类名也可能不太理想。尽量做到描述性,避免与语言中的任何共同点发生冲突。您的自定义代码可能类似于:
public ChatEvent Event { get; set; }
//...
public class ChatEvent
{
public string Type { get; set; }
public string User { get; set; }
public string Text { get; set; }
public string Ts { get; set; }
public string Channel { get; set; }
public string Event_ts { get; set; }
}
事件
是一个关键字。您可以将属性命名为Event
(与类型同名是合法的),但最好将Event
命名为更具体的名称,这样就不会与通用的C#概念发生冲突(ChannelEvent
或类似的名称)。Event
是一个关键字,在它前面加上@
(Event@Event
)前缀,或者重命名它David的回答解释了一个选项——但我建议重命名所有属性以遵循.NET命名约定,这将从一开始就避免这个问题。您应该能够使用属性来指定C#属性如何映射到JSON属性名。event
是一个关键字。您可以将属性命名为Event
(与类型同名是合法的),但最好将Event
命名为更具体的名称,这样就不会与通用的C#概念发生冲突(ChannelEvent
或类似的名称)。Event
是一个关键字,在它前面加上@
(Event@Event
)前缀,或者重命名它David的回答解释了一个选项——但我建议重命名所有属性以遵循.NET命名约定,这将从一开始就避免这个问题。您应该能够使用属性来指定C#属性如何映射到JSON属性名。