Ответ 1
Сериализаторы сериализации ServiceStack следуют за поведением сериализатора .NET DataContract, что означает, что вы можете игнорировать элементы данных с помощью атрибута opt-out [IgnoreDataMember]
public class Poco
{
public int Id { get; set; }
public string Name { get; set; }
[IgnoreDataMember]
public string IsIgnored { get; set; }
}
Альтернативой выбора является украшение каждого свойства, которое вы хотите сериализовать с помощью [DataMember]
. Остальные свойства не сериализуются, например:
[DataContract]
public class Poco
{
[DataMember]
public int Id { get; set; }
[DataMember]
public string Name { get; set; }
public string IsIgnored { get; set; }
}
Наконец, есть также неинтрузивный параметр, который не требует атрибутов, например:
JsConfig<Poco>.ExcludePropertyNames = new [] { "IsIgnored" };
Динамическое определение свойств, которые должны быть сериализованы
Сериализаторы ServiceStack также поддерживают динамическое управление сериализацией, предоставляя условно названные методы ShouldSerialize({PropertyName})
, чтобы указать, должно ли быть сериализовано или нет, например:
public class Poco
{
public int Id { get; set; }
public string Name { get; set; }
public string IsIgnored { get; set; }
public bool? ShouldSerialize(string fieldName)
{
return fieldName == "IsIgnored";
}
}
Другие примеры в ConditionalSerializationTests.cs