Benutzerdefiniertes Attribut, das die Funktionalität des JsonIgnore-Attributs kopiertC#

Ein Treffpunkt für C#-Programmierer
Anonymous
 Benutzerdefiniertes Attribut, das die Funktionalität des JsonIgnore-Attributs kopiert

Post by Anonymous »

Ich möchte ein benutzerdefiniertes Attribut erstellen, das im Grunde das Gleiche tut wie [JsonIgnore] aus System.Text.Json, aber einen anderen Namen hat.
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
Erstellen eines benutzerdefinierten Attributs, das die Implementierung von JsonIgnoreAttribute kopiert:

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 ;))
Eine Möglichkeit wäre

Code: Select all

global using VirtualProperty = System.Text.Json.Serialization.JsonIgnoreAttribute;
Allerdings können wir dem Attribut später keine Funktionalität hinzufügen, was wir vielleicht tun möchten.
Wie kann ich das machen? Warum funktioniert mein benutzerdefiniertes Attribut nicht?

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post