C# - 在webservice上公开枚举类型

Doo*_*ght 1 c# enums web-services

好吧,我试图在我的webservice上公开这个枚举类型时遇到了重大问题.在暴露它们方面,它的功能与我的自定义类不同.

服务器端:

[DataContractAttribute]
public enum EventReportType {EventAutoContract, DailyAutoContract, EventFunctionSheet }
Run Code Online (Sandbox Code Playgroud)

客户端:

// For a custom class I would do:
ServerRef.MyClass maclass = new ServerRef.MyClass();
// but the following does not work.
ServerRef.EventReportType myenum = new ServerRef.EventReportType();
enum test = new ServerRef.EventReportType();
Run Code Online (Sandbox Code Playgroud)

即使在WSDL中我也不认为它,所以我如何让它正确曝光?我将如何消费和使用它?

请看一下我的另一个问题:赏金类型的REST?

Gra*_*mas 6

因为类型是a enum,所以不创建它的实例,您可以访问值的静态表示.

例如,

var value = EventReportType.EventAutoContract;
Run Code Online (Sandbox Code Playgroud)

但一般情况下,除非你需要,否则你不会将值赋值给变量,你只需要明确地使用它; 所以,比如说调用一个接受这种类型的枚举值的服务方法:

myServiceCall(EventReportType.EventAutoContract);
Run Code Online (Sandbox Code Playgroud)

请注意,您不需要明确拼写其中DataContractAttribute任何一个,这可以简化为DataContract,同样,您可能还需要enum使用该EnumMember属性来扩充每个成员.所以...

[DataContract]
public enum EventReportType 
{
    [EnumMember]
    EventAutoContract, 
    [EnumMember]
    DailyAutoContract, 
    [EnumMember]
    EventFunctionSheet 
}
Run Code Online (Sandbox Code Playgroud)

您可以在此处找到有关在数据协定中使用枚举类型的参考.最终,如果您enum在服务中的某个地方正确定义并使用了客户端,enum则会生成.