Пример #1
0
        public void RegisterDataLoader(Type type,
                                       string key,
                                       ExecutionScope scope,
                                       Func <IServiceProvider, object> loaderFactory             = null,
                                       Func <object, CancellationToken, Task> triggerLoaderAsync = null)
        {
            if (key == null)
            {
                throw new ArgumentNullException(nameof(key));
            }

            Func <IServiceProvider, object> factory = null;

            if (loaderFactory != null)
            {
                factory = loaderFactory;
            }

            TriggerDataLoaderAsync trigger = null;

            if (triggerLoaderAsync != null)
            {
                trigger = (o, c) => triggerLoaderAsync(o, c);
            }

            var descriptor = new DataLoaderDescriptor(
                key, type, scope,
                factory,
                trigger);

            _dataLoaders[key] = descriptor;
        }
        public void RegisterLoader <T>(
            string key,
            ExecutionScope scope,
            Func <IServiceProvider, T> loaderFactory             = null,
            Func <T, CancellationToken, Task> triggerLoaderAsync = null)
        {
            if (key == null)
            {
                throw new ArgumentNullException(nameof(key));
            }

            var descriptor = new DataLoaderDescriptor(
                key, typeof(T), scope,
                sp => loaderFactory(sp),
                (o, c) => triggerLoaderAsync((T)o, c));

            _dataLoaders[key] = descriptor;
        }