示例#1
0
        /// <summary>
        /// Register Bson serializer with custom currency set into custom registry
        /// </summary>
        public static void Register(ICurrencySet currencySet, BsonSerializerRegistry registry)
        {
            var serializer = new BsonCurrencySerializer(currencySet);

            registry.RegisterSerializer(typeof(ICurrency), serializer);
            registry.RegisterSerializer(typeof(Currency), serializer);
            registry.RegisterSerializer(typeof(Iso4217.Currency), serializer);
        }
示例#2
0
        private IBsonSerializer <C> CreateSubject()
        {
            // create subject without using the global serializer registry
            var serializerRegistry = new BsonSerializerRegistry();
            var subject            = new EnumerableInterfaceImplementerSerializer <C, C>(serializerRegistry);

            serializerRegistry.RegisterSerializer(typeof(C), subject);
            return(subject);
        }
示例#3
0
        public void Setup()
        {
            var registry = new BsonSerializerRegistry();

            registry.RegisterSerializationProvider(new BsonObjectModelSerializationProvider());
            BsonCurrencySerializer.Register(Iso4217.CurrencySet.Instance, registry);
            _serializer = new BsonMoneySerializer(
                amountFieldName: _customAmountFieldName,
                currencyFieldName: _customCurrencyFieldName,
                registry: registry);
            registry.RegisterSerializer(typeof(Money), _serializer);
            _registry = registry;
        }
示例#4
0
        private string BuildAndReturnQueryFilterAsJsonString(ResourceType resourceType, string searchParameter, string query)
        {
            var bsonSerializerRegistry = new BsonSerializerRegistry();

            bsonSerializerRegistry.RegisterSerializationProvider(new BsonSerializationProvider());

            var resourceTypeAsString = resourceType.GetLiteral();
            var criterium            = Criterium.Parse(query);

            criterium.SearchParameters.AddRange(ModelInfo.SearchParameters.Where(p => p.Resource == resourceTypeAsString && p.Name == searchParameter));

            var filter     = criterium.ToFilter(resourceType.GetLiteral());
            var jsonFilter = filter?.Render(null, bsonSerializerRegistry)?.ToJson();

            return(jsonFilter);
        }
        private IEnumerable <TProjection> Project <TProjection>(IEnumerable <BsonDocument> documents, ProjectionDefinition <TDocument, TProjection> projection)
        {
            IBsonSerializer <TProjection> serializer;

            if (projection != null)
            {
                var bsonSerializer         = BsonSerializer.LookupSerializer <TDocument>();
                var bsonSerializerRegistry = new BsonSerializerRegistry();
                projection.Render(bsonSerializer, bsonSerializerRegistry);
                serializer = projection.Render(bsonSerializer, bsonSerializerRegistry).ProjectionSerializer;
            }
            else
            {
                serializer = BsonSerializer.LookupSerializer <TProjection>();
            }

            return(DeserializeDocuments(documents, serializer));
        }
示例#6
0
        public async Task <IEnumerable <Wine> > GetWinesAsync(WinesFilter filters)
        {
            var filterDefinition = filters.ToFilterDefinition();

            // Get a BsonDocumentSerializer needed by the Render function
            var wineSerializer     = BsonSerializer.SerializerRegistry.GetSerializer <Wine>();
            var serializerRegistry = new BsonSerializerRegistry();

            try
            {
                var filterBsonDocument = filterDefinition.Render(wineSerializer, serializerRegistry);
                var year = filterBsonDocument?.Elements?.ToList().FirstOrDefault(e => e.Name == "year").Value?.AsInt32;
                var bin  = filterBsonDocument?.Elements?.ToList().FirstOrDefault(e => e.Name == "bin").Value?.AsInt32;

                var vineyard = filterBsonDocument?.Elements?.ToList().FirstOrDefault(e => e.Name == "vineyard").Value?.AsString;

                if (!string.IsNullOrEmpty(vineyard))
                {
                    await GetWinesByVineyardAsync(vineyard).ConfigureAwait(false);
                }


                if (year > 0)
                {
                    _wineList = _wineList.Where(w => w.Year == year)?.ToList();
                }

                if (bin > 0)
                {
                    _wineList = _wineList.Where(w => w.Bin == bin)?.ToList();
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine($"{ex.Message},   InnerExec Message: {ex.InnerException?.Message}");
            }
            return(await Task.FromResult(_wineList).ConfigureAwait(false));
        }