Beispiel #1
0
        private void DecorateInternal <TDependency, TDecorator>(Action <StronglyTypedDecoratorConfigurator <TDependency, TDecorator> >?registrator = null, string callerFilePath = "", int callerLineNumber = -1)
            where TDependency : class
            where TDecorator : TDependency
        {
            var context = new StronglyTypedDecoratorConfigurator <TDependency, TDecorator>(callerFilePath, callerLineNumber, Registrations.CurrentModule);

            registrator?.Invoke(context);
            Expression binding = context.ToBinding();

            Registrations.AddDecorator(typeof(TDependency), binding);
        }
        private void DecorateInternal <TDependency, TDecorator>(Action <StronglyTypedDecoratorConfigurator <TDependency, TDecorator> >?configurator, IConstructorResolver?constructorSelector, string callerFilePath, int callerLineNumber)
            where TDependency : class
            where TDecorator : TDependency
        {
            var metadata = new BindingMetadata(callerFilePath, callerLineNumber, Registrations.CurrentModule);
            var context  = new StronglyTypedDecoratorConfigurator <TDependency, TDecorator>(metadata, Settings, constructorSelector);

            configurator?.Invoke(context);
            Expression binding = context.ToBinding();

            Registrations.AddDecorator(typeof(TDependency), binding);
        }
        private void DecorateInternal <TService, TDecorator>(Action <StronglyTypedDecoratorConfigurator <TService, TDecorator> >?configurator, string callerFilePath, int callerLineNumber)
            where TService : class
            where TDecorator : TService
        {
            var metadata = new BindingMetadata(callerFilePath, callerLineNumber, Registrations.CurrentModule);
            var context  = new StronglyTypedDecoratorConfigurator <TService, TDecorator>(metadata, Settings);

            configurator?.Invoke(context);
            Expression binding = context.ToBinding();

            Registrations.AddDecorator(typeof(TService), binding);
        }