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