背景
作为我对 WCF 服务的请求的一部分,我传入了一个枚举值Add(详见下文),但服务实现使用了共享库的枚举对象(本质上是相同的,并且使用 AutoMapper 进行映射),似乎只能读取第一个成员,即 Equal。换句话说,用户输入了Add,但服务实现得到了Equal。
细节
我有一个枚举定义为
[DataContract]
public enum MyOperator
{
[EnumMember]
Equal = 0,
[EnumMember]
Add = 1,
[EnumMember]
Subtract = 2
}
此枚举是另一个数据合约的属性,如下所示:
[DataContract]
public class MyExpression
{
[DataMember]
public string Field {get;set;}
[DataMember]
public string Value{get;set;}
[DataMember]
public MyOperator Operator {get;set;}
}
最后,这包含在我的请求正文中:
[DataContract]
public class RequestBody
{
...
public MyExpression Expression {get;set;}
...
}
对应的枚举对象位于共享库中,定义为:
public enum MyOperator
{
Equal = 0,
Add = 1,
Subtract = 2
}
在调试服务实现(使用此共享库的 MyOperator 枚举)期间,我观察到的问题是,尽管用户输入 Add 作为 Soap 请求的一部分,但我仍然每次都看到 Equal。
我尝试声明MyOperator
为 a KnownType
,但这似乎没有帮助。
谢谢你的帮助!如果您需要更多详细信息,请告诉我