W odpowiedzi na Chris' answer, właściwość DefaultMemberSearchFlags
na DefaultContractResolver
was deprecated as of version 6. Pomimo tego, co mówi komunikat o wycofaniu, uważam, że będziesz musiał nadpisać również metodę CreateProperties
, taką jak L.B explains.
Ta metoda daje pełną kontrolę, włącznie z wyłączeniem właściwości tylko do odczytu:
class PrivateContractResolver : DefaultContractResolver
{
protected override List<MemberInfo> GetSerializableMembers(Type objectType)
{
var flags = BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic;
MemberInfo[] fields = objectType.GetFields(flags);
return fields
.Concat(objectType.GetProperties(flags).Where(propInfo => propInfo.CanWrite))
.ToList();
}
protected override IList<JsonProperty> CreateProperties(Type type, MemberSerialization memberSerialization)
{
return base.CreateProperties(type, MemberSerialization.Fields);
}
}
pracował dla mnie. +1. Jak mogę teraz określić, które właściwości wyłączyć? Opcja regex byłaby jeszcze lepsza. – Mukus