public CollectionService( ICollectionInitializer initializer, ICollectionResolver <TContext> resolver, IDatabaseCollectionProvider <TContext> provider) { _initializer = initializer ?? throw new ArgumentNullException(nameof(initializer)); _resolver = resolver ?? throw new ArgumentNullException(nameof(resolver)); _provider = provider ?? throw new ArgumentNullException(nameof(provider)); }
public IDatabaseCollection <TItem> GetCollection <TItem>(IDatabaseCollectionProvider <TContext> collectionProvider, string collectionId, Type collectionItemType) { //collection item type and actual requested item type is the same if (collectionItemType == typeof(TItem)) { return(collectionProvider.GetCollection <TItem, TItem>(collectionId)); } //requested item type is derived from collection item type //TODO: cache var getCollectionMethod = ReflectionUtil.GetGenericMethod(collectionProvider.GetType(), "GetCollection", BindingFlags.Instance | BindingFlags.Public, 2, 1); var genericGetCollectionMethod = getCollectionMethod.MakeGenericMethod(typeof(TItem), collectionItemType); return((IDatabaseCollection <TItem>)genericGetCollectionMethod.Invoke(collectionProvider, new object[] { collectionId })); }
public IDatabaseCollection <TItem> GetCollection <TItem>(IDatabaseCollectionProvider <TContext> collectionProvider) { var collectionInfo = GetCollectionInfo <TItem>(); return(GetCollection <TItem>(collectionProvider, collectionInfo.CollectionId, collectionInfo.CollectionItemType)); }
public DatabaseCollection(string collectionName, DatabaseCollectionOptions options) { _options = options; _provider = CreateProviderInstance(collectionName, options); }