当前位置 : 主页 > 大数据 > 区块链 >

.net – RuntimeTypeModel如何用于将ProtoInclude与protobuf-net中的类型相关联?

来源:互联网 收集:自由互联 发布时间:2021-06-22
据我所知,RuntimeTypeModel允许将ProtoInclude与一个类型相关联,这对于无法更改类型声明的情况很有用.但我发现很难理解它是如何实际完成的. 有一个例子吗? 谢谢. AddSubType()用于指定派生类
据我所知,RuntimeTypeModel允许将ProtoInclude与一个类型相关联,这对于无法更改类型声明的情况很有用.但我发现很难理解它是如何实际完成的.

有一个例子吗?

谢谢.

AddSubType()用于指定派生类型及其标识符;例如( 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;
    }

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

网友评论