Ответ 1
Отвечая на мой собственный вопрос, но подумал, что это может быть полезно другим...
Мы завершили реализацию этого, используя пользовательский IContractResolver
. Нам нужны функциональные возможности DefaultContractResolver
, поэтому мы получаем из этого, а затем настраиваем CreateProperty
, чтобы игнорировать то, что нам не очень важно сериализовать. Например.
internal class IgnoreDataMemberContractResolver : DefaultContractResolver
{
protected override JsonProperty CreateProperty(MemberInfo member, MemberSerialization memberSerialization)
{
JsonProperty property = base.CreateProperty(member, memberSerialization);
property.Ignored |= member.GetCustomAttributes(typeof(IgnoreDataMemberAttribute), true).Length > 0;
return property;
}
}