2011-03-22 83 views
0

基本上,我创建了我的WSDL并添加了一个带枚举值的SimpleType:A,B,C。当我用这个wsdl构建我的服务时,我想用FlagsAttribute构造枚举,但是如何在wsdl中指定它?WSDL:如何用C#FlagsAttribute创建枚举?

我正在使用svcutil.exe来生成我的C#代码。

更新:我正在使用svcutil.exe构建我的服务器端代码。我通过拨打电话:svcutil.exe "Foo.wsdl" "global.xsd"。但是,我不知道该如何正确地标记我的WSDL/XSD标记,这样生成的代码出来,像这样:

[Flags] //<-- How do you get this to become autogenerated? 
public enum SomeEnum 
{ 
    A, 
    B, 
    C 
} 
+0

哪种语言在? – 2011-03-22 16:02:44

+0

C#(最好使用svcutil.exe) – michael 2011-03-22 17:01:36

回答

1

Enumeration Types in Data Contracts解释了这个漂亮的很好。从他们的例子:

[DataContract][Flags] 
public enum CarFeatures 
{ 
    None = 0, 
    [EnumMember] 
    AirConditioner = 1, 
    [EnumMember] 
    AutomaticTransmission = 2, 
    [EnumMember] 
    PowerDoors = 4, 
    AlloyWheels = 8, 
    DeluxePackage = AirConditioner | AutomaticTransmission | PowerDoors | AlloyWheels, 
    [EnumMember] 
    CDPlayer = 16, 
    [EnumMember] 
    TapePlayer = 32, 
    MusicPackage = CDPlayer | TapePlayer, 
    [EnumMember] 
    Everything = DeluxePackage | MusicPackage 
} 

除非我在这里错过了重点。

+0

问题是想要如何让svcutil自动用'FlagsAttribute'标记枚举。我想知道wsdl xml是如何实现这样一个目标的。 – michael 2011-03-22 19:49:47

+0

@michael:我的理解是XSD需要将其标记为svcutil来做出这种改变。您可以手动更改生成的文件,但这会影响svcutil和可维护性的目的。 – 2011-03-22 20:12:03

+0

这正是我所要求的。我的wsdl/xsd文件需要如何标记,以便svcutil为我自动生成[[Flags]]? – michael 2011-03-22 20:49:12