예제 #1
0
        /// <summary>
        ///
        /// </summary>
        public object GetInstance()
        {
            var constructors = RealType.GetConstructors();
            var parasInfos   = constructors[0].GetParameters();
            var paras        = new List <object>();

            foreach (var parasInfo in parasInfos)
            {
                var obj = GetParameterInstance(parasInfo.ParameterType);
                paras.Add(obj);
            }

            return(constructors[0].Invoke(paras.ToArray()));
        }
예제 #2
0
        public object GetInstance()
        {
            //取得Type的构造函数, 这里为了简便,默认使用最后一个,实际的Autofac默认会使用参数最长的一个
            var constructors = RealType.GetConstructors();
            var paramsInfos  = constructors[constructors.Length - 1].GetParameters();

            List <object> objParams = new List <object>();

            foreach (var parameterInfo in paramsInfos)
            {
                var tempPara = GetParameterInstance(parameterInfo.ParameterType);
                objParams.Add(tempPara);
            }

            //调用构造函数构造对象
            return(constructors[0].Invoke(objParams.ToArray()));
        }
예제 #3
0
        public object GetInstance()
        {
            //取得Type的构造函数, 这里为了简便,默认使用最后一个,实际的Autofac默认会使用参数最长的一个
            var constructors = RealType.GetConstructors();
            var paramsInfos  = constructors[constructors.Length - 1].GetParameters();
            //准备构造函数的参数
            var @params = new List <object>();

            foreach (var parameterInfo in paramsInfos)
            {
                //根据类型,取的参数的实例。本人注:这里根据type自动匹配注册的类型,然后利用委托循环调用,类似递归
                var tempPara = GetParameterInstance(parameterInfo.ParameterType);
                @params.Add(tempPara);
            }

            //调用构造函数构造对象
            return(constructors[0].Invoke(@params.ToArray()));
        }