示例#1
0
 public DefaultConstructorSelector(IConstructorFinder constructorFinder, IConstructorSorter constructorSorter)
 {
     Requires.NotNull(constructorFinder, "constructorFinder");
     Requires.NotNull(constructorSorter, "constructorSorter");
     _constructorFinder = constructorFinder;
     _constructorSorter = constructorSorter;
 }
示例#2
0
        /// <summary>
        /// Create an activator for the provided type.
        /// </summary>
        /// <param name="implementationType">Type to activate.</param>
        /// <param name="constructorFinder">Constructor finder.</param>
        /// <param name="constructorSelector">Constructor selector.</param>
        /// <param name="configuredParameters">Parameters configured explicitly for this instance.</param>
        /// <param name="configuredProperties">Properties configured explicitly for this instance.</param>
        public ReflectionActivator(
            Type implementationType,
            IConstructorFinder constructorFinder,
            IConstructorSelector constructorSelector,
            IEnumerable <Parameter> configuredParameters,
            IEnumerable <Parameter> configuredProperties)
            : base(implementationType)
        {
            if (constructorFinder == null)
            {
                throw new ArgumentNullException(nameof(constructorFinder));
            }
            if (constructorSelector == null)
            {
                throw new ArgumentNullException(nameof(constructorSelector));
            }
            if (configuredParameters == null)
            {
                throw new ArgumentNullException(nameof(configuredParameters));
            }
            if (configuredProperties == null)
            {
                throw new ArgumentNullException(nameof(configuredProperties));
            }

            _implementationType   = implementationType;
            ConstructorFinder     = constructorFinder;
            ConstructorSelector   = constructorSelector;
            _configuredProperties = configuredProperties;

            _defaultParameters = configuredParameters.Concat(
                new Parameter[] { new AutowiringParameter(), new DefaultValueParameter() });
        }
示例#3
0
        /// <summary>
        /// Initializes a new instance of the <see cref="ReflectionActivatorData"/> class.
        /// </summary>
        /// <param name="implementer">Type that will be activated.</param>
        public ReflectionActivatorData(Type implementer)
        {
            ImplementationType = implementer;

            _constructorFinder   = DefaultConstructorFinder;
            _constructorSelector = DefaultConstructorSelector;
        }
 public ReflectionActivator(Type implementationType, IConstructorFinder constructorFinder, IConstructorSelector constructorSelector, IEnumerable <Parameter> configuredParameters, IEnumerable <Parameter> configuredProperties) : base(Enforce.ArgumentNotNull <Type>(implementationType, "implementationType"))
 {
     this._implementationType   = implementationType;
     this._constructorFinder    = Enforce.ArgumentNotNull <IConstructorFinder>(constructorFinder, "constructorFinder");
     this._constructorSelector  = Enforce.ArgumentNotNull <IConstructorSelector>(constructorSelector, "constructorSelector");
     this._configuredParameters = Enforce.ArgumentNotNull <IEnumerable <Parameter> >(configuredParameters, "configuredParameters");
     this._configuredProperties = Enforce.ArgumentNotNull <IEnumerable <Parameter> >(configuredProperties, "configuredProperties");
 }
示例#5
0
 public ServiceConstructorProvider(IConstructorInfoListGenerator infoListGenerator, IConstructorListGenerator listGenerator, IServiceHasConstructorParametersChecker hasConstructorParametersChecker, IConstructorFinder constructorFinder, IConstructorParametersGenerator parametersGenerator, IConstructorProvider constructorProvider)
 {
     InfoListGenerator = infoListGenerator;
     ListGenerator     = listGenerator;
     HasConstructorParametersChecker = hasConstructorParametersChecker;
     ConstructorFinder   = constructorFinder;
     ParametersGenerator = parametersGenerator;
     ConstructorProvider = constructorProvider;
 }
 public ConstructorInstanceCreator(IConstructorInvoker constructorInvoker, IConstructorParametersGenerator parametersGenerator,
                                   IConstructorProvider constructorProvider, IConstructorInfoListGenerator constructorInfoListGenerator, IConstructorFinder constructorFinder,
                                   IConstructorListGenerator constructorListGenerator, IParametersValuesExtractor parametersValuesExtractor)
 {
     ConstructorInvoker           = constructorInvoker;
     ParametersGenerator          = parametersGenerator;
     ConstructorProvider          = constructorProvider;
     ConstructorInfoListGenerator = constructorInfoListGenerator;
     ConstructorFinder            = constructorFinder;
     ConstructorListGenerator     = constructorListGenerator;
     ParametersValuesExtractor    = parametersValuesExtractor;
 }
示例#7
0
 public void SetConstructorFinder(IConstructorFinder finder)
 {
     if (Mapper != null)
     {
         throw MapCompilerException.MapAndCompilerSpecified();
     }
     if (ConstructorFinder != null)
     {
         throw new InvalidOperationException("Attempt to specify two constructor finders. You may only have one constructor finder per map attempt.");
     }
     ConstructorFinder = finder;
 }
示例#8
0
        FindConstructorsWith <TLimit, TReflectionActivatorData, TStyle>(
            this IRegistrationBuilder <TLimit, TReflectionActivatorData, TStyle> registration,
            IConstructorFinder constructorFinder)
            where TReflectionActivatorData : ReflectionActivatorData
        {
            if (registration == null)
            {
                throw new ArgumentNullException(nameof(registration));
            }

            registration.ActivatorData.ConstructorFinder = constructorFinder ?? throw new ArgumentNullException(nameof(constructorFinder));
            return(registration);
        }
 /// <summary>
 /// Create an activator for the provided type.
 /// </summary>
 /// <param name="implementationType">Type to activate.</param>
 /// <param name="constructorFinder">Constructor finder.</param>
 /// <param name="constructorSelector">Constructor selector.</param>
 /// <param name="configuredParameters">Parameters configured explicitly for this instance.</param>
 /// <param name="configuredProperties">Properties configured explicitly for this instance.</param>
 public ReflectionActivator(
     Type implementationType,
     IConstructorFinder constructorFinder,
     IConstructorSelector constructorSelector,
     IEnumerable<Parameter> configuredParameters,
     IEnumerable<Parameter> configuredProperties)
     : base(Enforce.ArgumentNotNull(implementationType, "implementationType"))
 {
     _implementationType = implementationType;
     _constructorFinder = Enforce.ArgumentNotNull(constructorFinder, "constructorFinder");
     _constructorSelector = Enforce.ArgumentNotNull(constructorSelector, "constructorSelector");
     _configuredParameters = Enforce.ArgumentNotNull(configuredParameters, "configuredParameters");
     _configuredProperties = Enforce.ArgumentNotNull(configuredProperties, "configuredProperties");
 }
示例#10
0
        /// <summary>
        /// Create an activator for the provided type.
        /// </summary>
        /// <param name="implementationType">Type to activate.</param>
        /// <param name="constructorFinder">Constructor finder.</param>
        /// <param name="constructorSelector">Constructor selector.</param>
        /// <param name="configuredParameters">Parameters configured explicitly for this instance.</param>
        /// <param name="configuredProperties">Properties configured explicitly for this instance.</param>
        public ReflectionActivator(
            Type implementationType,
            IConstructorFinder constructorFinder,
            IConstructorSelector constructorSelector,
            IEnumerable<Parameter> configuredParameters,
            IEnumerable<Parameter> configuredProperties)
            : base(Enforce.ArgumentNotNull(implementationType, "implementationType"))
        {
            _implementationType = implementationType;
            _constructorFinder = Enforce.ArgumentNotNull(constructorFinder, "constructorFinder");
            _constructorSelector = Enforce.ArgumentNotNull(constructorSelector, "constructorSelector");
            _configuredParameters = Enforce.ArgumentNotNull(configuredParameters, "configuredParameters");
            _configuredProperties = Enforce.ArgumentNotNull(configuredProperties, "configuredProperties");

            _defaultParameters = _configuredParameters.Concat(
                new Parameter[] {new AutowiringParameter(), new DefaultValueParameter()});
        }
示例#11
0
        /// <summary>
        /// Create an activator for the provided type.
        /// </summary>
        /// <param name="implementationType">Type to activate.</param>
        /// <param name="constructorFinder">Constructor finder.</param>
        /// <param name="constructorSelector">Constructor selector.</param>
        /// <param name="configuredParameters">Parameters configured explicitly for this instance.</param>
        /// <param name="configuredProperties">Properties configured explicitly for this instance.</param>
        public ReflectionActivator(
            Type implementationType,
            IConstructorFinder constructorFinder,
            IConstructorSelector constructorSelector,
            IEnumerable <Parameter> configuredParameters,
            IEnumerable <Parameter> configuredProperties)
            : base(Enforce.ArgumentNotNull(implementationType, "implementationType"))
        {
            _implementationType   = implementationType;
            _constructorFinder    = Enforce.ArgumentNotNull(constructorFinder, "constructorFinder");
            _constructorSelector  = Enforce.ArgumentNotNull(constructorSelector, "constructorSelector");
            _configuredParameters = Enforce.ArgumentNotNull(configuredParameters, "configuredParameters");
            _configuredProperties = Enforce.ArgumentNotNull(configuredProperties, "configuredProperties");

            _defaultParameters = _configuredParameters.Concat(
                new Parameter[] { new AutowiringParameter(), new DefaultValueParameter() });
        }
示例#12
0
        public InstanceActivator(IInstanceActivator activator)
        {
            this.activator = activator;
            var reflectionActivator = activator as ReflectionActivator;

            if (reflectionActivator != null)
            {
                this.constructorFinder   = reflectionActivator.ConstructorFinder;
                this.constructorSelector = reflectionActivator.ConstructorSelector;
                this._defaultParameters  = (IEnumerable <Parameter>)_defaultParametersField.GetValue(reflectionActivator);
            }
            else
            {
                this.constructorFinder   = new DefaultConstructorFinder();
                this.constructorSelector = new MostParametersConstructorSelector();
                this._defaultParameters  = new Parameter[] { new AutowiringParameter(), new DefaultValueParameter() };
            }
        }
        /// <summary>
        /// Create an activator for the provided type.
        /// </summary>
        /// <param name="implementationType">Type to activate.</param>
        /// <param name="constructorFinder">Constructor finder.</param>
        /// <param name="constructorSelector">Constructor selector.</param>
        /// <param name="configuredParameters">Parameters configured explicitly for this instance.</param>
        /// <param name="configuredProperties">Properties configured explicitly for this instance.</param>
        public ReflectionActivator(
            Type implementationType,
            IConstructorFinder constructorFinder,
            IConstructorSelector constructorSelector,
            IEnumerable<Parameter> configuredParameters,
            IEnumerable<Parameter> configuredProperties)
            : base(implementationType)
        {
            if (constructorFinder == null) throw new ArgumentNullException(nameof(constructorFinder));
            if (constructorSelector == null) throw new ArgumentNullException(nameof(constructorSelector));
            if (configuredParameters == null) throw new ArgumentNullException(nameof(configuredParameters));
            if (configuredProperties == null) throw new ArgumentNullException(nameof(configuredProperties));

            _implementationType = implementationType;
            ConstructorFinder = constructorFinder;
            ConstructorSelector = constructorSelector;
            _configuredProperties = configuredProperties;

            _defaultParameters = configuredParameters.Concat(
                new Parameter[] {new AutowiringParameter(), new DefaultValueParameter()});
        }
 public ConstructorFinderWrapper(IConstructorFinder constructorFinder, DynamicProxyContext dynamicProxyContext)
 {
     _constructorFinder   = constructorFinder;
     _dynamicProxyContext = dynamicProxyContext;
 }
        public ConstructorDelegateFactory(IConstructorFinder constructorFinder)
        {
            ArgumentUtility.CheckNotNull("constructorFinder", constructorFinder);

            _constructorFinder = constructorFinder;
        }
 public static IRegistrationBuilder <TLimit, TReflectionActivatorData, TStyle> FindConstructorsWith <TLimit, TReflectionActivatorData, TStyle>(this IRegistrationBuilder <TLimit, TReflectionActivatorData, TStyle> registration, IConstructorFinder constructorFinder) where TReflectionActivatorData : ReflectionActivatorData
 {
     if (registration == null)
     {
         throw new ArgumentNullException("registration");
     }
     if (constructorFinder == null)
     {
         throw new ArgumentNullException("constructorFinder");
     }
     registration.ActivatorData.ConstructorFinder = constructorFinder;
     return(registration);
 }
示例#17
0
 public ConstructorFinderWrapper(IConstructorFinder constructorFinder, DynamicProxyContext dynamicProxyContext)
 {
     _constructorFinder = constructorFinder;
     _dynamicProxyContext = dynamicProxyContext;
 }
示例#18
0
        public void SetUp()
        {
            _constructorFinderMock = MockRepository.GenerateStrictMock <IConstructorFinder>();

            _factory = new ConstructorDelegateFactory(_constructorFinderMock);
        }
 public ReflectionActivator(Type limitType, IConstructorFinder finder) :
     base(limitType)
 {
     _constructorFinder = finder;
 }
 public ReflectionActivatorData(Type implement)
 {
     Implement         = implement;
     ConstructorFinder = new DefaultConstructorFinder();
 }