示例#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;
        }
示例#2
0
 public DataLoaderDescriptor(
     string key,
     Type type,
     ExecutionScope scope,
     Func <IServiceProvider, object> factory,
     TriggerDataLoaderAsync triggerLoadAsync)
 {
     Key              = key ?? throw new ArgumentNullException(nameof(key));
     Type             = type ?? throw new ArgumentNullException(nameof(type));
     Scope            = scope;
     Factory          = factory;
     TriggerLoadAsync = triggerLoadAsync;
 }