C# 如何公开第三方';是通过我的asmx枚举的吗?

C# 如何公开第三方';是通过我的asmx枚举的吗?,c#,.net,.net-2.0,asmx,enums,C#,.net,.net 2.0,Asmx,Enums,鉴于: ASMXWeb服务 包含有用枚举的第三方dll 问题: 如何通过我的 无需重复的web服务 并重新键入枚举的成员 在我的Web服务的公共类中 您可以创建一个方法,该方法接受或返回一个包含枚举的值。当他们生成代理类时,枚举上的名称空间将更改为您的服务名称空间,但您将拥有他们在您端输入的值。这应该不是问题,但前提是他们不试图在您的服务和第三方中使用相同的枚举。您可以创建一个方法,该方法可以获取或返回包含枚举的值。当他们生成代理类时,枚举上的名称空间将更改为您的服务名称空间,但您将拥有他们

鉴于:

  • ASMXWeb服务
  • 包含有用枚举的第三方dll
问题:

如何通过我的 无需重复的web服务 并重新键入枚举的成员 在我的Web服务的公共类中


您可以创建一个方法,该方法接受或返回一个包含枚举的值。当他们生成代理类时,枚举上的名称空间将更改为您的服务名称空间,但您将拥有他们在您端输入的值。这应该不是问题,但前提是他们不试图在您的服务和第三方中使用相同的枚举。

您可以创建一个方法,该方法可以获取或返回包含枚举的值。当他们生成代理类时,枚举上的名称空间将更改为您的服务名称空间,但您将拥有他们在您端输入的值。只要他们不想在您的服务和第三方中使用相同的枚举,这应该不是问题。

这个问题是关于如何通过SOAP web服务公开编程语言枚举。这是不可能做到的。原因如下:

通过“enum”,OP表示生成由命名整数值组成的类型的编程语言构造。例如:

public enum MyEnum
{
    Value1 = 10,
    Value2 = 20,
    Value3 = 30
}
这会在名称(如
Value
)和相应的值(如
10
)之间产生关联。soapweb服务中没有类似的东西

soapweb服务通过WSDL(web服务描述语言)向客户机描述自己。WSDL使用XML模式(XSD)来描述要在客户端和服务之间交换的数据的形状

XMLSchema有一个“枚举”的概念,它描述了某个元素或属性可以有几个值中的一个。这些值在XML模式中列出(枚举)。比如说,

  <xs:simpleType name="MyEnum">
    <xs:restriction base="xs:string">
      <xs:enumeration value="Value1"/>
      <xs:enumeration value="Value2"/>
      <xs:enumeration value="Value3"/>
    </xs:restriction>
  </xs:simpleType>

这定义了一个类型,该类型可以采用三个字符串值之一:“Value1”、“Value2”或“Value3”。这些值与整数值没有任何关联。只要敲击它,就可以考虑以下内容:

  <xs:simpleType name="MyDateEnumeration">
    <xs:restriction base="xs:date">
      <xs:enumeration value="2013-06-01"/>
      <xs:enumeration value="2013-06-05"/>
      <xs:enumeration value="2014-06-01"/>
    </xs:restriction>
  </xs:simpleType>

这定义了一种类型,它可以采用三个
日期
值中的一个:2013年6月1日、2013年6月5日或2014年6月1日。请注意,既没有与任何整数值的关联,也没有与任何字符串名称的关联

归根结底,XML模式不能描述
enum
的编程语言概念。因此,WSDL不能使用
enum
的编程语言概念,这意味着SOAP web服务不能公开
enum


最好是公开名称或值,但不能同时公开两者,如上面的
MyEnum
中所述。当客户端使用该服务时,它可以将
MyEnum
转换为编程语言中的
enum
。但是,由于没有与任何名称关联的整数值,因此可以合理地预期每个客户机使用不同的整数值。一个客户端可能使用
1
表示
Value1
,而另一个客户端可能使用
0

这个问题是关于如何通过SOAP web服务公开编程语言枚举。这是不可能做到的。原因如下:

通过“enum”,OP表示生成由命名整数值组成的类型的编程语言构造。例如:

public enum MyEnum
{
    Value1 = 10,
    Value2 = 20,
    Value3 = 30
}
这会在名称(如
Value
)和相应的值(如
10
)之间产生关联。soapweb服务中没有类似的东西

soapweb服务通过WSDL(web服务描述语言)向客户机描述自己。WSDL使用XML模式(XSD)来描述要在客户端和服务之间交换的数据的形状

XMLSchema有一个“枚举”的概念,它描述了某个元素或属性可以有几个值中的一个。这些值在XML模式中列出(枚举)。比如说,

  <xs:simpleType name="MyEnum">
    <xs:restriction base="xs:string">
      <xs:enumeration value="Value1"/>
      <xs:enumeration value="Value2"/>
      <xs:enumeration value="Value3"/>
    </xs:restriction>
  </xs:simpleType>

这定义了一个类型,该类型可以采用三个字符串值之一:“Value1”、“Value2”或“Value3”。这些值与整数值没有任何关联。只要敲击它,就可以考虑以下内容:

  <xs:simpleType name="MyDateEnumeration">
    <xs:restriction base="xs:date">
      <xs:enumeration value="2013-06-01"/>
      <xs:enumeration value="2013-06-05"/>
      <xs:enumeration value="2014-06-01"/>
    </xs:restriction>
  </xs:simpleType>

这定义了一种类型,它可以采用三个
日期
值中的一个:2013年6月1日、2013年6月5日或2014年6月1日。请注意,既没有与任何整数值的关联,也没有与任何字符串名称的关联

归根结底,XML模式不能描述
enum
的编程语言概念。因此,WSDL不能使用
enum
的编程语言概念,这意味着SOAP web服务不能公开
enum


最好是公开名称或值,但不能同时公开两者,如上面的
MyEnum
中所述。当客户端使用该服务时,它可以将
MyEnum
转换为编程语言中的
enum
。但是,由于没有与任何名称关联的整数值,因此可以合理地预期每个客户机使用不同的整数值。一个客户端可能会对
Value1
使用
1
,而另一个客户端可能会使用
0

请注意,这将公开具有相同名称的枚举,但不会保留整数值。请注意,这将公开具有相同名称的枚举,但不会保留整数值。