为所有继承自基本类型的类设置自定义MongoDB BsonSerializer

工作

有没有一种方法可以为从特定基本类型继承的所有类型设置自定义序列化程序?

给定以下类型:

class Identity<T> {
    T Value { get; set; }
}
class StringIdentity : Identity<string> {
}
class PersonIdentity : StringIdentity {
}

使用以下模型:

class Person {
    public PersonId Identity { get; set; }
}

和以下序列化器:

class StringIdentitySerializer : IBsonSerializer<StringIdentity>
{
    object IBsonSerializer.Deserialize(BsonDeserializationContext context, BsonDeserializationArgs args)
    {
        return Deserialize(context, args);
    }

    public void Serialize(BsonSerializationContext context, BsonSerializationArgs args, StringIdentity value)
    {
        context.Writer.WriteString(value.Value);
    }

    public StringIdentity Deserialize(BsonDeserializationContext context, BsonDeserializationArgs args)
    {
        return new StringIdentity(context.Reader.ReadString());
    }

    public void Serialize(BsonSerializationContext context, BsonSerializationArgs args, object value)
    {
        Serialize(context, args, value as StringIdentity);
    }

    public Type ValueType => typeof(StringIdentity);
}

我想,BsonSerializer.RegisterSerializer(typeof(StringIdentity), new StringIdentitySerializer());将序列我的财产IdPerson为字符串。

当我将Id属性更改为type时,此序列化器将起作用StringIdentity

我知道为什么会发生这种情况(PersonIdentity与类型不同StringIdentity),但是(没有装饰Person类)为什么我会在IdPersonIdentity获取type的属性Person以使用此序列化程序进行序列化?

克雷格·威尔逊(Craig Wilson)

因此,执行此操作的方法是注册序列化提供程序这将使您拦截所有尝试解析身份的尝试,并对其进行任何处理。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

为所有继承自基本类型的类设置自定义MongoDB BsonSerializer

来自分类Dev

C#Mongo BsonSerializer.Deserialize忽略不存在的元素

来自分类Dev

如何创建自定义类型以始终表示具有一定数量元素的某些基本类型的数组?

来自分类Dev

为所有齐射请求设置自定义标题

来自分类Dev

基本类型上的自定义鉴别器 = null:“但没有配置鉴别器值”

来自分类Dev

phpcs-将默认消息类型设置为对来自自定义规则集的所有片段的警告

来自分类Dev

如何在JsViews自定义标记中链接基本类型变量

来自分类Dev

从自定义验证器中的验证上下文的基本类型中获取价值

来自分类Dev

Java 中有没有一种方法可以基于 java.lang 基本类型(例如字符串)构建自定义类型?

来自分类Dev

从基本类型继承的枚举

来自分类Dev

具有定义的基本类型的Type类的类型安全集合

来自分类Dev

为所有截击请求设置自定义标头

来自分类Dev

将自定义函数设置为所有信号的处理程序

来自分类Dev

Swift-创建类型为Array的自定义类

来自分类Dev

如何检查类型是否为自定义类

来自分类Dev

如何禁用基本类型的所有隐式转换?

来自分类Dev

为所有具有值和标签属性的嵌套结构定义自定义类型

来自分类Dev

WordPress:获取自定义类型的所有帖子

来自分类Dev

具有自定义类类型的键的哈希图

来自分类Dev

带有 POJO 类的 GreenDao 中的自定义类型

来自分类Dev

如何在wicket中为“ required”属性为true的所有组件添加自定义css类?

来自分类Dev

将具有所有操作的自定义haskell类型封装到一个类中

来自分类Dev

xib文件中的自定义类和文件的所有者设置有什么区别?

来自分类Dev

为所有 View 控件添加自定义属性

来自分类Dev

自定义类型类的类型麻烦

来自分类Dev

为什么自定义管道给出错误:错误:类型“ EllipsisPipe”中的属性“ transform”无法分配给基本类型“ SlicePipe”中的相同属性

来自分类Dev

在使用Json.NET进行序列化期间向所有类添加自定义类型名称

来自分类Dev

从Stack继承的Java中的自定义堆栈类始终为空

来自分类Dev

自定义类型,派生自 String

Related 相关文章

  1. 1

    为所有继承自基本类型的类设置自定义MongoDB BsonSerializer

  2. 2

    C#Mongo BsonSerializer.Deserialize忽略不存在的元素

  3. 3

    如何创建自定义类型以始终表示具有一定数量元素的某些基本类型的数组?

  4. 4

    为所有齐射请求设置自定义标题

  5. 5

    基本类型上的自定义鉴别器 = null:“但没有配置鉴别器值”

  6. 6

    phpcs-将默认消息类型设置为对来自自定义规则集的所有片段的警告

  7. 7

    如何在JsViews自定义标记中链接基本类型变量

  8. 8

    从自定义验证器中的验证上下文的基本类型中获取价值

  9. 9

    Java 中有没有一种方法可以基于 java.lang 基本类型(例如字符串)构建自定义类型?

  10. 10

    从基本类型继承的枚举

  11. 11

    具有定义的基本类型的Type类的类型安全集合

  12. 12

    为所有截击请求设置自定义标头

  13. 13

    将自定义函数设置为所有信号的处理程序

  14. 14

    Swift-创建类型为Array的自定义类

  15. 15

    如何检查类型是否为自定义类

  16. 16

    如何禁用基本类型的所有隐式转换?

  17. 17

    为所有具有值和标签属性的嵌套结构定义自定义类型

  18. 18

    WordPress:获取自定义类型的所有帖子

  19. 19

    具有自定义类类型的键的哈希图

  20. 20

    带有 POJO 类的 GreenDao 中的自定义类型

  21. 21

    如何在wicket中为“ required”属性为true的所有组件添加自定义css类?

  22. 22

    将具有所有操作的自定义haskell类型封装到一个类中

  23. 23

    xib文件中的自定义类和文件的所有者设置有什么区别?

  24. 24

    为所有 View 控件添加自定义属性

  25. 25

    自定义类型类的类型麻烦

  26. 26

    为什么自定义管道给出错误:错误:类型“ EllipsisPipe”中的属性“ transform”无法分配给基本类型“ SlicePipe”中的相同属性

  27. 27

    在使用Json.NET进行序列化期间向所有类添加自定义类型名称

  28. 28

    从Stack继承的Java中的自定义堆栈类始终为空

  29. 29

    自定义类型,派生自 String

热门标签

归档