gpt4 book ai didi

c# - 使用 protogen 为每个文件输出一个 C# 类?

转载 作者:太空宇宙 更新时间:2023-11-03 16:33:11 27 4
gpt4 key购买 nike

是否可以让 protogen 基于单个 .proto 文件输出多个文件(每个类一个)?

我正在处理一个非常大的 .proto 文件,它输出大约 200 个类,目前全部在一个文件中。我需要使用生成的类的地方之一是在内存高度受限的环境中(Windows Phone 后台代理)。

我希望能够只在受限环境中加载的程序集中包含必要的类,但是当生成的类都在一个文件中时,我无法轻松地做到这一点。如果我可以将它们输出到多个文件,我只能在受限环境的程序集中链接我需要的文件。

有没有办法让 protogen 在单独的文件中输出类?我看不到这个选项,目前只使用 umbrella-classname 选项。

手动编辑生成的文件不是一个选项,所以如果 protogen 不能这样做,是否有另一个可用的命令行工具可以拆分包含多个类的文件? (为了节省重新发明轮子。)

更新
我正在使用 Google.ProtocolBuffers.dll 一个继承的决定,不容易改变。
编辑/拆分 .proto 文件也不可行。 (除非作为自定义步骤。)

最佳答案

我们在 csharp_options 中有一个选项,但没有实现:

// Whether to generate a single file for everything within the
// .proto file (false), or one file per message (true).
// This option is not currently honored; please log a feature
// request if you really want it.
optional bool multiple_files = 4;

考虑到您必须删除相关文件并确保您获得所有依赖项,听起来它实际上不会为我建议的解决方案节省很多工作,是将您的 proto 文件拆分成单独的文件 您说这“也不是可能的”,但基本上这就是我目前所能提出的所有建议 - 为什么这不是可能的?

编辑:我刚刚有了另一个想法。您可能会运行 protogenprotoc 步骤(如果您没有另外指定,现在会自动完成)来解析 .proto 文件进入它的描述符。然后在另一个程序中加载描述符,像处理任何其他 protobuf 消息一样对其进行变异(从中创建构建器,编辑消息,构建),然后保存描述符。然后,您可以在剩余的描述符上使用 protogen,并仅生成您想要的类...

关于c# - 使用 protogen 为每个文件输出一个 C# 类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10121719/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com