我启动了一个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;
}
通过这种方式,我按照自己的意愿对类进行了序列化。但它让我很烦恼,因为我可能没有做正确的事情。我这样做了吗?
答案 0 :(得分:1)
我认为您应该为数据对象使用[DataContract]属性,为对象成员使用[DataMember]
喜欢这里http://msdn.microsoft.com/en-us/library/ms733127.aspx
当你想忽略一个项目时;您将其标记为[IgnoreDataMember]属性