内部类中的枚举名称通过WCF-service更改
本文关键字:WCF-service 更改 枚举 内部类 | 更新日期: 2023-09-27 18:04:50
我有一个action类,里面有一个Enum
[DataContract]
public class Actions
{
[DataContract]
public enum MailDirectLinkContent
{
[EnumMember]
[DescriptionAttribute("Second account holder")]
SecondAccountHolder = 0,
[EnumMember]
[DescriptionAttribute("Legal representative")]
LegalRepresentative = 1,
[EnumMember]
[DescriptionAttribute("Authorized representative")]
AuthorizedRepresentative = 2
}
}
在我的wcf-service中我有一个方法
[OperationContract]
void DoActionMailDirectLinkContent(string toAddress, Actions.MailDirectLinkContent mailDirectLinkContent);
当我想在我的web客户端中使用这个Enum时,它出现如下:
var myValue = ActionsMailDirectLinkContent.AuthorizedRepresentative;
(类名和枚举名之间的点消失)
我想对这种行为有一个合理的解释,但是我找不到。
更新:我将Enum从类中取出并将其放在子文件夹中,以便它们仍然分组在一起。这个变化的原因是我遇到的另一个问题,我可以用这种方式解决它。
WCF为您从web服务方法返回的类型生成自己的名称。它通常尝试根据本地名称命名事物,但我猜它不能真正"命名空间"类型,因此类型不能包含.
。因此,WCF正在尽最大努力为其服务创建一个enum类型,该类型具有描述性名称,但适合SOAP模式(或您正在使用的任何绑定)。
序列化与c#有不同的规则,你不能期望每个c#特性都被支持。
它不能处理嵌套类型,所以它为这些类型构造了一个扁平的名称。
你也不能在OperationContract中重载方法。