Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/326.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 无效令牌';事件';在类、记录、结构或接口成员声明中_C#_Asp.net Core_.net Core - Fatal编程技术网

C# 无效令牌';事件';在类、记录、结构或接口成员声明中

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 {

我从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 { 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属性名。