public static void RegisterMongo() { if (_reg) return; _reg = true; if (!BsonClassMap.IsClassMapRegistered(typeof(ConstructGenGen<DateTime, DateTime>))) { BsonClassMap.RegisterClassMap<ConstructGenGen<DateTime, DateTime>>(cm => { var dateSerializer = new DateTimeSerializer(dateOnly: true); cm.AutoMap(); cm.GetMemberMap(c => c.ColumnHeadings).SetElementName("headings"); cm.GetMemberMap(c => c.ArrayLength).SetElementName("length"); cm.GetMemberMap(c => c.Name).SetElementName("name"); cm.GetMemberMap(c => c.Keys).SetElementName("keys") .SetSerializer( new EnumerableInterfaceImplementerSerializer<List<DateTime>>(dateSerializer)); cm.GetMemberMap(c => c.Data) .SetElementName("data") .SetSerializer(new DictionaryInterfaceImplementerSerializer<Dictionary<DateTime, DateTime[]>>(DictionaryRepresentation.ArrayOfArrays, dateSerializer, new ArraySerializer<DateTime>(dateSerializer))); }); } BsonClassMap.RegisterClassMap<TenorDates>(cm => { cm.AutoMap(); cm.MapIdProperty(c => c.ID).SetIdGenerator(ObjectIdGenerator.Instance); cm.GetMemberMap(c => c.HolidayCode).SetElementName("calendarCode"); cm.GetMemberMap(c => c.SpotStart).SetElementName("spotStart"); }); }
//методы public static void ApplyGlobalSerializationSettings() { //сериализаторы var dateSerializer = new DateTimeSerializer(DateTimeKind.Utc); BsonSerializer.RegisterSerializer(typeof(DateTime), dateSerializer); //проверка Id BsonSerializer.UseNullIdChecker = true; BsonSerializer.UseZeroIdChecker = true; }