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)); } }
/// <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)); } }
/// <inheritdoc /> public Task <SafeBrowsingStatus> CheckAsync(string url) => TaskUtilities.FromResult(Check(url));
static Func <IContext, Task <IVh <T> > > P_GetAcquireDelegate(Func <IVh <T> > acquire) { acquire.EnsureNotNull(nameof(acquire)); // return((locContext) => TaskUtilities.FromResult(getter: acquire)); }