// TODO: Put strings into the resources. // public DependencyResolutionSpecs( Type dependencyType, bool ensureResolution = false, bool isNewInstanceRequired = false, IArgsTuple newInstanceFactoryArgs = null, bool preventNewInstanceInitialization = false, IDependencyResolutionModel primaryResolutionModel = null, IDependencyResolutionSelectCriterion selectCriterion = null, IDisposeRegistry disposeRegistry = null) { // dependencyType.EnsureNotNull(nameof(dependencyType)); if (!isNewInstanceRequired && newInstanceFactoryArgs != null) { throw new ArgumentException( message: $"Этот аргумент не применим и должен иметь значение '{((object)null).FmtStr().G()}', когда значение аргумента '{nameof(isNewInstanceRequired)}' равно '{false.FmtStr().G()}'.", paramName: nameof(newInstanceFactoryArgs)); } // _dependencyType = dependencyType; _ensureResolution = ensureResolution; _isNewInstanceRequired = isNewInstanceRequired; _newInstanceFactoryArgs = newInstanceFactoryArgs; _preventNewInstanceInitialization = preventNewInstanceInitialization; _primaryResolutionModel = primaryResolutionModel; _selectCriterion = selectCriterion; _disposeRegistry = disposeRegistry; }
public CtorFactoryDependencyHandler( Func <TArg1, TArg2, TArg3, TArg4, TDependencyInstance> customCtor = null, bool canShareDependency = false, IArgsTuple <TArg1, TArg2, TArg3, TArg4> factoryArgs = null) : base(requireClassTDependencyInstance : customCtor == null) { // factoryArgs ?.ArgsCount .Arg($"{nameof(factoryArgs)}.{nameof(factoryArgs.ArgsCount)}") .EnsureEq(__ArgsCount); // _customCtor = customCtor; _canShareDependency = canShareDependency; _factoryArgs = factoryArgs; // if (customCtor == null) { _getDependencyCtor = () => __DependencyInstanceCtor.Value; } else { _getDependencyCtor = () => ReadDA(ref _customCtor); } }
protected override void Dispose(bool explicitDispose) { _getDependencyCtor = null; _customCtor = null; _factoryArgs = null; // base.Dispose(explicitDispose); }
public CtorFactoryDependencyHandler( bool canShareDependency, IArgsTuple <TArg1, TArg2, TArg3, TArg4> factoryArgs = null) : this( customCtor : null, canShareDependency : canShareDependency, factoryArgs : factoryArgs) { }
protected override void Dispose(bool explicitDispose) { _dependencyType = null; _primaryResolutionModel = null; _selectCriterion = null; _newInstanceFactoryArgs = null; _disposeRegistry = null; // base.Dispose(explicitDispose); }
public DependencyResolutionSpecs( Type dependencyTypeConstraint = null, bool ensureResolution = false, bool isNewInstanceRequired = false, IArgsTuple newInstanceFactoryArgs = null, bool preventNewInstanceInitialization = false, IDependencyResolutionModel primaryResolutionModel = null, IDependencyResolutionSelectCriterion <TDependency> selectCriterion = null, IDisposeRegistry disposeRegistry = null) : base( dependencyType: dependencyTypeConstraint.Arg(nameof(dependencyTypeConstraint)).EnsureCompatible(__DependencyType).Value ?? __DependencyType, ensureResolution: ensureResolution, isNewInstanceRequired: isNewInstanceRequired, newInstanceFactoryArgs: newInstanceFactoryArgs, preventNewInstanceInitialization: preventNewInstanceInitialization, primaryResolutionModel: primaryResolutionModel, selectCriterion: selectCriterion, disposeRegistry: disposeRegistry) { _selectCriterion = selectCriterion; }
protected sealed override void GetFactoryArgs(out IArgsTuple factoryArgs) => factoryArgs = ReadDA(ref _factoryArgs);
protected abstract void GetFactoryArgs(out IArgsTuple factoryArgs);
public static Type GetIArgsTupleType(IArgsTuple args) => GetIArgsTupleType(hnd: args.Arg(nameof(args)));