如何使用 RuntimeTypeModel 将 ProtoInclude 与 protobuf-net 中的类型关联起来?

发布于 2024-11-08 23:29:10 字数 115 浏览 0 评论 0原文

据我了解,RuntimeTypeModel 允许将 ProtoInclude 与类型关联,这对于类型声明无法更改的情况很有用。但我发现很难理解它实际上是如何完成的。

有例子吗?

谢谢。

As I understood, RuntimeTypeModel allows to associate ProtoInclude with a type, which is useful for cases when the type declaration cannot be changed. But I find it hard to understand how it is actually done.

Is there an example?

Thanks.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

忆离笙 2024-11-15 23:29:10

AddSubType() 用于指定派生类型及其标识符;例如(完整代码):

    static RuntimeTypeModel CreateModel() {
        var model = TypeModel.Create();
        model[typeof(NotInvolved)].Add(1, "D");
        model[typeof(SomeBase)]
            .Add(1, "A")
            .AddSubType(2, typeof(SomeDerived))
            .AddSubType(3, typeof(AnotherDerived));
        model[typeof(SomeDerived)].Add(1, "B");
        model[typeof(AnotherDerived)].Add(1, "C");
        model[typeof(AlsoNotInvolved)].Add(1, "E");
        return model;
    }

上面在运行时配置了整个类型模型,但您也可以在自动(通过属性)和显式(通过代码)之间进行混合和匹配。

AddSubType() is used to specify derived types, along with their identifier; for example (full code):

    static RuntimeTypeModel CreateModel() {
        var model = TypeModel.Create();
        model[typeof(NotInvolved)].Add(1, "D");
        model[typeof(SomeBase)]
            .Add(1, "A")
            .AddSubType(2, typeof(SomeDerived))
            .AddSubType(3, typeof(AnotherDerived));
        model[typeof(SomeDerived)].Add(1, "B");
        model[typeof(AnotherDerived)].Add(1, "C");
        model[typeof(AlsoNotInvolved)].Add(1, "E");
        return model;
    }

The above configures the entire type model at runtime, but you can also mix-and-match between automatic (via properties) and explicit (through code).

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文