可以将 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,我想序列化它(属性的属性),这样我就可以把它发送到前端。
Attribute
有 TypeId
属性,默认情况下包含属性的类型(请参阅文档中的备注),在使用 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;
}
}
我从属性类型
中创建了一个 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,我想序列化它(属性的属性),这样我就可以把它发送到前端。
Attribute
有 TypeId
属性,默认情况下包含属性的类型(请参阅文档中的备注),在使用 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;
}
}