Ejemplo n.º 1
0
            /// <summary> Create an instance of a type assuming a parameterless constructor. </summary>
            public object CreateInstance(Type implementationType)
            {
                // activator
                if (_emptyActivators.TryGetValue(implementationType, out var activator))
                {
                    return(activator());
                }
                var ctor = implementationType.GetConstructor(Type.EmptyTypes);

                _emptyActivators[implementationType] = activator = DynamicMethodFactory.Build(implementationType, ctor);
                return(activator());
            }
Ejemplo n.º 2
0
        /// <summary> Create an instance of a type assuming a parameterless constructor. </summary>
        public object CreateInstance(Type implementationType)
        {
            // activator
            ParameterlessObjectActivator activator;

            if (!_emptyActivators.TryGetValue(implementationType, out activator))
            {
                ConstructorInfo ctor = implementationType.GetConstructor(Type.EmptyTypes);
                _emptyActivators[implementationType] = activator = DynamicMethodFactory.Build(implementationType, ctor);
            }
            return(activator());
        }
Ejemplo n.º 3
0
        /// <summary> Create an instance of a type assuming a parameterless constructor. </summary>
        public object CreateInstance(Type type)
        {
            Contract.Assert(!type.IsAbstract && !type.IsInterface,
                            "Cannot create instances of static, abstract, or interface types.");

            // activator
            if (_emptyActivators.TryGetValue(type, out var activator))
            {
                return(activator());
            }
            var ctor = type.GetConstructor(Type.EmptyTypes);

            _emptyActivators[type] = activator = DynamicMethodFactory.Build(type, ctor);
            return(activator());
        }
Ejemplo n.º 4
0
            /// <summary> Create an instance of a type assuming a set of parameters. </summary>
            public object CreateInstance(Type implementationType, object[] args)
            {
                if (args == null || args.Length == 0)
                {
                    return(CreateInstance(implementationType));
                }

                // activator
                if (!_activators.TryGetValue(implementationType, out var activator))
                {
                    var ctor       = GetOrCacheConstructorForType(implementationType);
                    var parameters = GetOrCacheParametersForConstructor(ctor);
                    _activators[implementationType] = activator = DynamicMethodFactory.Build(implementationType, ctor, parameters);
                }

                return(activator(args));
            }