You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

是否有类似Protobuf-net的工具可从C#类自动生成Avro schema

C# 类自动生成Avro Schema工具说明

现有成熟工具可完全匹配你的需求,和Protobuf-net的使用逻辑一致,通过给C#类、属性添加对应特性标记,就可以直接从代码提取信息自动生成Avro Schema,无需手动编写schema文件。

主流实现方案:Apache Avro 官方.NET库

这是目前最通用的实现,Apache官方维护的Apache.Avro NuGet包自带了完整的特性标记体系和Schema生成能力,使用方式和你提供的Protobuf示例高度相似:

  • 给需要生成Schema的类添加[AvroRecord]特性,对应Protobuf的[ProtoContract]
  • 给类的属性添加[AvroField(序号)]特性,对应Protobuf的[ProtoMember(序号)],序号用来定义Avro Schema的字段顺序

对应示例代码

// 引用Apache.Avro包后即可使用对应特性
[AvroRecord]
class Person 
{
    [AvroField(0)]
    public int Id {get;set;}
    [AvroField(1)]
    public string Name {get;set;}
    [AvroField(2)]
    public Address Address {get;set;}
}

// 关联的Address类同样加对应标记即可
[AvroRecord]
class Address
{
    [AvroField(0)]
    public string Street {get;set;}
    [AvroField(1)]
    public string City {get;set;}
}

Schema生成方法

直接调用库提供的生成方法即可得到完整的Avro Schema字符串:
var avroSchema = Avro.Schema.GenerateSchema(typeof(Person)).ToString();

其他可选能力

  • 支持给字段添加别名、默认值、可选标记等配置,满足不同的Schema定义需求
  • 如果是Kafka相关的Avro使用场景,Confluent官方的Avro序列化包完全兼容这套特性,还支持自动将生成的Schema注册到Schema Registry,无需额外手动操作

内容的提问来源于stack exchange,提问作者xichen

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 10:57:05