internal ConventionDependencyInjectionBehavior( IDependencyInjectionBehavior decoratee, IParameterConvention convention, Container container) { _decoratee = decoratee; _convention = convention; _container = container; }
internal static void Verify(this IDependencyInjectionBehavior behavior, ConstructorInfo constructor) { foreach (ParameterInfo parameter in constructor.GetParameters()) { behavior.Verify(new InjectionConsumerInfo(parameter)); } }
public MsContextualLoggerInjectionBehavior( ILoggerFactory factory, Container container) { this.factory = factory; this.original = container.Options.DependencyInjectionBehavior; this.container = container; }
public ContextualDecoratorInjectionBehavior(Container container, ContextualPredicateCollection contextualPredicates) { this.container = container; this.contextualPredicates = contextualPredicates; this.defaultBehavior = container.Options.DependencyInjectionBehavior; }
public ConventionDependencyInjectionBehavior( IDependencyInjectionBehavior decorated, IParameterConvention convention, Container container) { this.decorated = decorated; this.convention = convention; this.container = container; }
internal static void Verify(this IDependencyInjectionBehavior behavior, Type serviceType, ConstructorInfo constructor) { foreach (var parameter in constructor.GetParameters()) { behavior.Verify(new InjectionConsumerInfo(serviceType, constructor.DeclaringType, parameter)); } }
internal ContainerOptions(Container container) { Requires.IsNotNull(container, nameof(container)); this.Container = container; this.resolutionBehavior = new DefaultConstructorResolutionBehavior(); this.injectionBehavior = new DefaultDependencyInjectionBehavior(container); this.propertyBehavior = new DefaultPropertySelectionBehavior(); this.lifestyleBehavior = new DefaultLifestyleSelectionBehavior(this); }
internal ContainerOptions(Container container) { Requires.IsNotNull(container, "container"); this.Container = container; this.resolutionBehavior = new DefaultConstructorResolutionBehavior(); this.injectionBehavior = new DefaultDependencyInjectionBehavior(container); this.propertyBehavior = new DefaultPropertySelectionBehavior(); this.lifestyleBehavior = new DefaultLifestyleSelectionBehavior(Lifestyle.Transient); this.batchRegistrationBehavior = new DefaultBatchRegistrationBehavior(container); }
internal static string?VerifyConstructor( this IDependencyInjectionBehavior behavior, ConstructorInfo constructor) { foreach (ParameterInfo parameter in constructor.GetParameters()) { if (!behavior.VerifyDependency(new InjectionConsumerInfo(parameter), out string?message)) { return(message); } } return(null); }
public FancyInjectionBehavior(Container container, Func <InjectionConsumerInfo, bool> canResolve, Func <InjectionConsumerInfo, T> instanceCreator, Func <InjectionConsumerInfo, object> keyFunc, Lifestyle lifestyle) { this.container = container; this.innerBehavior = container.Options.DependencyInjectionBehavior; this.canResolve = canResolve; this.resolve = instanceCreator; this.lifestyle = lifestyle; if (keyFunc == null) { this.keyFunc = info => info; } else { this.keyFunc = keyFunc; } }
/// <summary>Verifies the specified <paramref name="consumer"/>.</summary> /// <param name="behavior">The behavior.</param> /// <param name="consumer">Contextual information about the consumer where the built dependency is /// injected into.</param> /// <exception cref="ActivationException"> /// Thrown when the type of the <see cref="InjectionConsumerInfo.Target">target</see> supplied with /// the supplied <paramref name="consumer"/> cannot be used for auto wiring.</exception> /// <exception cref="ArgumentNullException">Thrown when one of the supplied arguments is a null /// reference.</exception> public static void Verify( this IDependencyInjectionBehavior behavior, InjectionConsumerInfo consumer) { // NOTE: In v5, both IConstructorResolutionBehavior's and IDependencyInjectionBehavior's method // signatures changed (see #557). This is both a binary and code breaking change, which affects // anyone implementing an IDependencyInjectionBehavior. There's nothing much we can do about // this (since fixing #557 was more important). By adding this extension method, however, we can // reduce the pain for anyone using (calling) this interface. This extension method duplicates // the signature and behavior of the old method. This still makes the change binary incompatible, // even from perspective of the caller, but it would allow their code to keep compiling (mostly). Requires.IsNotNull(behavior, nameof(behavior)); Requires.IsNotNull(consumer, nameof(consumer)); if (!behavior.VerifyDependency(consumer, out string?message)) { throw new ActivationException( message is null || string.IsNullOrWhiteSpace(message) ? StringResources.DependencyNotValidForInjectionAccordingToCustomInjectionBehavior( behavior, consumer) : message); } }
public OptionalArgumentsInjectionBehavior(Container container, IDependencyInjectionBehavior original) { this.container = container; this.original = original; }
public AutomaticParameterizedFactoriesHelper(ContainerOptions options) { this.container = options.Container; this.originalBehavior = options.DependencyInjectionBehavior; }
public NamedDependencyInjectionBehavior(IDependencyInjectionBehavior defaultBehavior, Func<Type, string, InstanceProducer> keyedProducerRetriever) { this.defaultBehavior = defaultBehavior; this.keyedProducerRetriever = keyedProducerRetriever; }
public OptionalParameterConvention(IDependencyInjectionBehavior injectionBehavior) { this.injectionBehavior = injectionBehavior; }
public ConventionDependencyInjectionBehavior( IDependencyInjectionBehavior decorated, IParameterConvention convention) { this.decorated = decorated; this.convention = convention; }
/// <summary> /// Get a new instance /// </summary> /// <param name="initial">Behavior we're about to decorate</param> /// <param name="convention">New behavior</param> public ConventionDependencyInjectionBehavior(IDependencyInjectionBehavior initial, IParameterConvention convention) { _initial = initial; _convention = convention; }
public SerilogContextualLoggerInjectionBehavior(ContainerOptions options) { this.original = options.DependencyInjectionBehavior; this.container = options.Container; }
public ContextualDecoratorInjectionBehavior(Container container, ContextualPredicateCollection contextualPredicates) { this.contextualPredicates = contextualPredicates; this.defaultBehavior = container.Options.DependencyInjectionBehavior; }
public NamedDependencyInjectionBehavior(IDependencyInjectionBehavior defaultBehavior, Func <Type, string, InstanceProducer> keyedProducerRetriever) { this.defaultBehavior = defaultBehavior; this.keyedProducerRetriever = keyedProducerRetriever; }
internal ContainerOptions(Container container) { Requires.IsNotNull(container, nameof(container)); this.Container = container; this.resolutionBehavior = new DefaultConstructorResolutionBehavior(); this.injectionBehavior = new DefaultDependencyInjectionBehavior(container); this.propertyBehavior = new DefaultPropertySelectionBehavior(); this.lifestyleBehavior = new DefaultLifestyleSelectionBehavior(Lifestyle.Transient); }
public static Expression BuildExpression(this IDependencyInjectionBehavior behavior, InjectionConsumerInfo consumer) { throw new NotSupportedException(DependencyInjectionBehaviorObsoleteMessage); }
public SeriLogContextualLoggerInjectionBrehavior(ContainerOptions options) { original = options.DependencyInjectionBehavior; container = options.Container; }
internal static string DependencyInjectionBehaviorReturnedNull(IDependencyInjectionBehavior behavior) => string.Format(CultureInfo.InvariantCulture, "The {0} that was registered through the Container.{3}.{4} property, returned a null " + "reference after its BuildExpression() method. {1}.BuildExpression implementations should " + "never return null, but should throw a {2} with an expressive message instead.", behavior.GetType().ToFriendlyName(), nameof(IDependencyInjectionBehavior), typeof(ActivationException).FullName, nameof(Container.Options), nameof(ContainerOptions.DependencyInjectionBehavior));
public FeatureInjectionBehavior(Container container, IDependencyInjectionBehavior behavior) { this.container = container; this.behavior = behavior; }