Als Antwort auf Chris' answer, die DefaultMemberSearchFlags
Eigenschaft auf DefaultContractResolver
was deprecated as of version 6. Trotz dem, was die deprecation Botschaft sagt, ich glaube, Sie werden die CreateProperties
Methode überschrieben werden müssen, auch, wie L.B explains.
Diese Methode gibt Ihnen die volle Kontrolle, einschließlich ohne Nur-Lese-Eigenschaften:
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);
}
}
für mich gearbeitet. +1. Wie kann ich jetzt angeben, welche Eigenschaften ausgeschlossen werden sollen? Eine Regex-Option wäre noch besser. – Mukus