c# - IBsonSerializationOptions 是否已从 MongoDB 的最新 C# 驱动程序中删除?

标签 c# mongodb mongodb-.net-driver

我的C#项目中有如下源代码,用mongocsharpdriver 1.8.3版本可以成功构建。但是当我将MongoDB C#驱动升级到2.0.1后,编译失败,提示找不到IBsonSerializationOptionsDateTimeSerializationOptions类(接口(interface)),我也检查了程序集中的所有命名空间,似乎这些类型已从最新版本的 MongoDB C# 驱动程序中删除。

public void Apply(BsonMemberMap memberMap)
{
    IBsonSerializationOptions options = null;
    switch (memberMap.MemberInfo.MemberType)
    {
       case MemberTypes.Property:
           PropertyInfo propertyInfo = (PropertyInfo)memberMap.MemberInfo;
           if (propertyInfo.PropertyType == typeof(DateTime) ||
               propertyInfo.PropertyType == typeof(DateTime?))
               options = new DateTimeSerializationOptions(DateTimeKind.Local);
           break;
       case MemberTypes.Field:
           FieldInfo fieldInfo = (FieldInfo)memberMap.MemberInfo;
           if (fieldInfo.FieldType == typeof(DateTime) ||
               fieldInfo.FieldType == typeof(DateTime?))
               options = new DateTimeSerializationOptions(DateTimeKind.Local);
           break;
       default:
           break;
   }
   memberMap.SetSerializationOptions(options);
}

我的问题是,在最新版本的 MongoDB C# 驱动程序中,这些类型的等价物是什么?

最佳答案

在 C# Driver 2.0 中你需要实现 IBsonSerializer

public class LocalTimeSerializer : IBsonSerializer
{
    public object Deserialize(BsonDeserializationContext context, BsonDeserializationArgs args)
    {
        return context.Reader.ReadDateTime();
    }

    public void Serialize(BsonSerializationContext context, BsonSerializationArgs args, object value)
    {
        context.Writer.WriteDateTime(((DateTime)value).ToLocalTime().Ticks);
    }

    public Type ValueType { get { return typeof(DateTime); } }
}

你应该注册序列化器

BsonSerializer.RegisterSerializer(typeof(DateTime), new LocalTimeSerializer());

关于c# - IBsonSerializationOptions 是否已从 MongoDB 的最新 C# 驱动程序中删除?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31178359/

相关文章:

javascript - 尝试返回数据时 var 返回 undefined 并且控制台日志显示数据

mongodb - 使用 Mongo 按组计算多个不同的字段

c# - 如何在 c# foreach 循环中使用 MongoDB 的 Query 和 QueryBuilder?

c# - 如何让 Controller 从发布的 JSON 对象设置 ObjectId

c# - ClickOnce 应用程序未从调度程序启动

c# - CaSTLe 动态代理 + Ninject as DI 的问题

c# - 静态字符串变量即使为空也会占用内存空间吗?

c# - 在 MSBuild .targets 中创建集合变量

orm - Grails ORM - MongoDB 相对于 Mysql 的优势

c# - 从 MongoDB 'documents' 获取所有 'collection'