Der Grund dafür ist, dass wir virtuelle Eigenschaften haben, die unter anderem niemals (de-)serialisiert werden sollten.
Ein [VirtualProperty]-Attribut wäre meiner Meinung nach hilfreicher Entwickler sehen, was vor sich geht, und würden die Möglichkeit ausschließen, dass eine Eigenschaft als virtuell gekennzeichnet ist, der jedoch das Attribut [JsonIgnore] fehlt.
Beachten Sie, dass ich mich mit virtuell nicht auf das C#-Schlüsselwort virtual beziehe, es ist einfach der Begriff, den wir gewählt haben, um eine bestimmte Art von zu beschreiben Eigenschaft.
Was ich versucht habe:
Ein benutzerdefiniertes Attribut erstellen, das von JsonIgnoreAttribute erbt
- Dies wird nicht kompiliert, da JsonIgnoreAttribute eine versiegelte Klasse ist
Code: Select all
[AttributeUsage(AttributeTargets.Property | AttributeTargets.Field, AllowMultiple = false)]
public class VirtualPropertyAttribute : JsonAttribute
{
public JsonIgnoreCondition Condition { get; set; } = JsonIgnoreCondition.Always;
}
- Das funktioniert nicht und die Eigenschaften werden immer noch serialisiert (ja, ich verwende System.Text.JsonSerializer und nicht Newtonsoft oder irgendein anderes  ) )
Code: Select all
global using VirtualProperty = System.Text.Json.Serialization.JsonIgnoreAttribute;
Wie kann ich das machen? Warum funktioniert mein benutzerdefiniertes Attribut nicht?
 Mobile version
 Mobile version