バックグラウンド
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列挙型を使用する)サービス実装のデバッグ中に、私が観察している問題は、ユーザーがSoapリクエストの一部としてAddを入力したにもかかわらず、毎回Equalが表示されることです。
MyOperator
として宣言してKnownType
みましたが、役に立たなかったようです。
助けてくれてありがとう!追加の詳細が必要な場合はお知らせください