1

Visual Studio WCF Rest Service Applicationプロジェクトを開始しました。このプロジェクトでは、シリアル化されたオブジェクトを含むJson形式のメッセージを返すサービスが必要であり、オブジェクトの一部のフィールドがシリアル化されないようにします。WCFに関する私の知識は非常に基本的であり、必要なものをすばやく実装するための簡単な方法であるため、VisualStudioのRestServiceApplicationプロジェクトを使用したことを言わなければなりません。

これが私が持っているオブジェクトだとしましょう:

public class BaseMessage
{
    public string errorCode { get; set; }
    public string errorMessage { get; set; }
}

そしてこれは私のコードです

    [WebGet(UriTemplate = "/v1/test", 
    ResponseFormat = WebMessageFormat.Json),OperationContract]

    public BaseMessage Test()
    {
        return (new BaseMessage { errorCode = "000", errorMessage = "test" });
    }

私がしなければならないことは、シリアル化したくないプロパティに[ScriptIgnore]属性を割り当てることだということをどこでも読んだことがあります。しかし、私がそうすると、それは機能しません。とにかくシリアル化してもらいます。

私がやりたいことを達成した唯一の方法は、この方法で返したいオブジェクトを宣言することです。

[Serializable]
public class BaseMessage
{
    public string errorCode;
    [NonSerialized]
    public string errorMessage;
}

このようにして、クラスを必要に応じてシリアル化します。しかし、私はこのことを正しくやっていないかもしれないので、それは私を大いに悩ませます。私はこれを正しくやっていますか?

4

1 に答える 1

1

データオブジェクトには [DataContract] 属性を、オブジェクトメンバーには [DataMember] を使用する必要があると思います

ここのようにhttp://msdn.microsoft.com/en-us/library/ms733127.aspx

アイテムを無視したい場合; [IgnoreDataMember] 属性としてマークします

于 2012-10-16T14:23:36.637 に答える