可以将 C# 属性序列化为 JSON 吗?

Can a C# attribute be serialized into JSON?

我从属性类型

中创建了一个 class
   public class DemoAttribute : Attribute {
    [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingDefault)]
    public string Label { get; private set; }

    public DemoAttribute(string label = null) {
        this.Label = label;
    }
}

当我尝试用 System.Text.Json

序列化它时
 var demo = new DemoAttribute("test");
 var json = JsonSerializer.Serialize(demo);

我得到一个 InvalidOperationException:

Method may only be called on a Type for which Type.IsGenericParameter is true.

我可以序列化一个属性而不先将其属性复制到具有相同属性的 'regular' class 吗?

Edit/Addition 我在 属性 上使用带有元数据的更广泛的属性,例如(在前端)标签、帮助文本、图标、验证规则、占位符等是什么。通过反射,我得到了属性properties,我想序列化它(属性的属性),这样我就可以把它发送到前端。

AttributeTypeId 属性,默认情况下包含属性的类型(请参阅文档中的备注),在使用 System.Text.Json 时在序列化期间失败。您可以覆盖此 属性 并忽略它:

public class DemoAttribute : Attribute
{
    [JsonIgnore]
    public override object TypeId { get; }

    [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingDefault)]
    public string Label { get; private set; }

    public DemoAttribute(string label = null)
    {
        this.Label = label;
    }
}