ScriptIgnore не работает в приложении службы WCF REST
Я запустил проект приложения-службы Visual Studio WCF Rest, где я хочу иметь службу, которая возвращает сообщение в формате Json с сериализованным объектом, и я хочу, чтобы НЕКОТОРЫЕ поля этого объекта не сериализовались. Я должен сказать, что мои знания WCF очень просты, и что я использовал проект приложения службы отдыха из Visual Studio, потому что это простой способ быстро реализовать то, что мне нужно.
Допустим, это объект, который у меня есть:
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;
}
Таким образом, я получаю сериализованный класс, как я хочу. Но это сильно беспокоит меня, потому что я не могу делать это правильно. Я делаю это правильно?
1 ответ
Я думаю, что вы должны использовать атрибут [DataContract] для ваших объектов данных и [DataMember] для членов вашего объекта
как здесь http://msdn.microsoft.com/en-us/library/ms733127.aspx
Когда вы хотите игнорировать элемент; вы помечаете его как атрибут [IgnoreDataMember]