1

我启动了一个 Visual Studio WCF Rest 服务应用程序项目,我希望有一个服务返回带有序列化对象的 Json 格式消息,并且我希望对象的某些字段不被序列化。我必须说,我对 WCF 的了解非常基础,并且我使用了 Visual Studio 中的 Rest Service Application 项目,因为它是一种快速实现我需要的简单方法。

假设这是我拥有的对象:

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 回答