/// <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); }
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); }
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; }
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)); }
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)); }