4

我有以下用例:有几个用 ProtoContract 类装饰的程序集,我想基于程序集生成 proto 文件。所以问题是如何做到这一点?

我的第一个意图是使用 Serailizer.GetProto 但它是通用方法,对我不起作用,因为我只知道运行时的类类型。

另外为什么在 r480 GetProto 中没有执行?

我也知道 VS08/10,但在我的场景中似乎没有帮助。

提前致谢。

4

2 回答 2

5

您可以通过Serializer.GetProto一点反思来使用该方法:

var method = typeof(Serializer).GetMethod("GetProto").MakeGenericMethod(type);
Func<string> getProto = Delegate.CreateDelegate(typeof(Func<string>), method);
var proto = getProto();
于 2012-07-03T11:13:25.717 回答
4

另外为什么在 r480 GetProto 中没有执行?

因为我时间有限,要求很多。最近有很多人问我GetProto,所以我把它放在我的名单上。我必须优先考虑功能方面的好处,努力反对可能的使用。GetProto不是序列化的“核心”,而是我想继续支持的东西。只是需要努力。这个特性的使用让我觉得延迟 v2 代码库是不合理的。

好消息是 v2 的核心是非泛型的,保留旧的泛型 API 纯粹是为了兼容。因此,当我重新实现它时,它完全可以在没有泛型的情况下使用。


更新:在 r545 中已对此进行了实验性剪辑。它通过了 v1 测试,但是:关于此功能的 v1 测试并不多!所以:我很快就会为此添加更多测试。

于 2012-07-03T11:49:17.900 回答