protected override Task <DependencyResult <TDependencyInstance> > ResolveNewDependencyInstanceAsync(IDependencyResolutionContext context)
 {
     try {
         var specs = context.EnsureNotNull(nameof(context)).Value.Specs;
         //
         var factoryArgs = ReadDA(ref _factoryArgs);
         if (factoryArgs is null)
         {
             // Поскольку в данном обработчике явно не заданы параметры конструктора нового экземпляра, используются те, что указаны в спецификации, если они подходят для использования (см. код ниже).
             //
             if ((factoryArgs = specs.NewInstanceFactoryArgs as IArgsTuple <TArg1>) == null || factoryArgs.ArgsCount != __ArgsCount)
             {
                 return(TaskUtilities.FromResult(DependencyResult <TDependencyInstance> .None));
             }
         }
         else if (!(specs.NewInstanceFactoryArgs is null))
         {
             // Поскольку спецификацией явно определены параметры конструктора нового экземпляра, а также явно заданны в данном обработчике (factoryArgs != null), то получается конфликт.
             //
             return(TaskUtilities.FromResult(DependencyResult <TDependencyInstance> .None));
         }
         return
             (TaskUtilities
              .FromResult(
                  result:
                  new DependencyResult <TDependencyInstance>(
                      instance: ReadDA(ref _getDependencyCtor)()(factoryArgs.Arg1),
                      isNewInstance: true)));
     }
     catch (Exception exception) {
         return(Task.FromException <DependencyResult <TDependencyInstance> >(exception));
     }
 }
 protected override Task <DependencyResult <TDependencyInstance> > ResolveNewDependencyInstanceAsync(IDependencyResolutionContext context)
 {
     try {
         var specs = context.EnsureNotNull(nameof(context)).Value.Specs;
         //
         var factoryArgs = ReadDA(ref _factoryArgs);
         if (factoryArgs is null)
         {
             if ((factoryArgs = specs.NewInstanceFactoryArgs as IArgsTuple <TArg1, TArg2, TArg3, TArg4, TArg5>) == null || factoryArgs.ArgsCount != __ArgsCount)
             {
                 return(TaskUtilities.FromResult(DependencyResult <TDependencyInstance> .None));
             }
         }
         else if (specs.NewInstanceFactoryArgs != null)
         {
             return(TaskUtilities.FromResult(DependencyResult <TDependencyInstance> .None));
         }
         //
         return
             (TaskUtilities
              .FromResult(
                  result:
                  new DependencyResult <TDependencyInstance>(
                      instance:
                      ReadDA(ref _getDependencyCtor)
                          ()
                          (factoryArgs.Arg1, factoryArgs.Arg2, factoryArgs.Arg3, factoryArgs.Arg4, factoryArgs.Arg5),
                      isNewInstance: true)));
     }
     catch (Exception exception) {
         return(Task.FromException <DependencyResult <TDependencyInstance> >(exception));
     }
 }
Exemple #3
0
        /// <inheritdoc />
        public Task <string> GetTreatmentAsync(string featureName, string differentiator, string defaultTreatment)
        {
            // In general
            // * INDETERMINATE_TREATMENT => return defaultTreatment
            // * Should not be errors here, if there were an error updating rules or segments, it is transparent here.
            var treatment = _features.TryGetValue(featureName, out Feature feature)
                ? feature.Treatments
                            .Where(x => x.Value.IncludedDifferentiators.Contains(differentiator))
                            .Select(x => x.Key)
                            .FirstOrDefault()
                : null;

            return(TaskUtilities.FromResult(treatment ?? defaultTreatment));
        }
 protected override Task <DependencyResult <TDependencyInstance> > ResolveNewDependencyInstanceAsync(IDependencyResolutionContext context)
 {
     try {
         var specs = context.EnsureNotNull(nameof(context)).Value.Specs;
         //
         if ((specs.NewInstanceFactoryArgs?.ArgsCount ?? 0) != __ArgsCount)
         {
             return(TaskUtilities.FromResult(DependencyResult <TDependencyInstance> .None));
         }
         else
         {
             return
                 (TaskUtilities
                  .FromResult(
                      result:
                      new DependencyResult <TDependencyInstance>(
                          instance: ReadDA(ref _getDependencyCtor, considerDisposeRequest: true)()(),
                          isNewInstance: true)));
         }
     }
     catch (Exception exception) {
         return(Task.FromException <DependencyResult <TDependencyInstance> >(exception));
     }
 }
Exemple #5
0
 /// <inheritdoc />
 public Task <SafeBrowsingStatus> CheckAsync(string url) =>
 TaskUtilities.FromResult(Check(url));
Exemple #6
0
 static Func <IContext, Task <IVh <T> > > P_GetAcquireDelegate(Func <IVh <T> > acquire)
 {
     acquire.EnsureNotNull(nameof(acquire));
     //
     return((locContext) => TaskUtilities.FromResult(getter: acquire));
 }