3

私はWindowsMo​​bile用に開発しているので、WCFではなくWebサービスを使用する必要があります。列挙型である1つのプロパティを除いて、正常に機能するWebサービスを介して渡すビジネスオブジェクトがあります。この値は、クライアントが何に設定したかに関係なく、常にデフォルト値としてサーバーに表示されます。非常に混乱 :(

サーバーで定義されているビジネスオブジェクトのコードは次のとおりです。

public enum TaskTypeEnum { GoodsReceipt, ImportCosting };

[Serializable, DataContractAttribute]
public class TaskContainer
{
    [DataMemberAttribute] 
    public TaskTypeEnum TaskType { get; set; }       
...

そして、このプロパティを設定するクライアントのコードは次のとおりです。

var container = new TaskContainer();
container.TaskType = TaskTypeEnum.ImportCosting;
service.Save(container);

この「コンテナ」オブジェクトがサーバーに到達するときの不明な理由により、クライアントで何を設定したかに関係なく、TaskTypeプロパティは常にGoodsReceiptに設定されます。

助けてくれてありがとう。

4

2 に答える 2

6

列挙型にもDataContractがあることを確認する必要があります。そうでない場合、列挙型はシリアル化されず、各メンバーには属性EnumMemberが必要です。

[DataContract]
public enum TaskTypeEnum 
{ 
     [EnumMember] 
     GoodsReceipt, 

     [EnumMember] 
     ImportCosting 
} 

http://msdn.microsoft.com/en-us/library/aa347875.aspxも参照してください。

于 2012-08-14T07:55:36.147 に答える
0

私も同様の問題を抱えていました。プリミティブ型のプロキシクラスフィールド(つまり、null許容でないフィールド)には、Specifiedと呼ばれる2番目のフィールドがあります。

おそらくあなたの場合、TaskContainerにはTaskTypeSpecifiedというフィールドがあります。設定してみてください

container.TaskTypeSpecified = true;
于 2012-11-09T13:15:37.653 に答える