CSharpGL.TypeHelper.CreateInstance C# (CSharp) Метод

CreateInstance() публичный статический Метод

Create an instance of specified type.
public static CreateInstance ( this type ) : object
type this
Результат object
        public static object CreateInstance(this Type type)
        {
            if (type == null)
            {
                throw new ArgumentNullException();
            }

            if (type.IsAbstract)
            {
                throw new Exception(string.Format("Cannot create instance for abstract type [{0}].", type));
            }

            object obj;
            if (type.IsValueType)
            {
                obj = Activator.CreateInstance(type);
            }
            else
            {
                ConstructorInfo ctor = (from item in type.GetConstructors() orderby item.GetParameters().Length select item).First();
                ParameterInfo[] parameterInfos = ctor.GetParameters();
                if (parameterInfos.Length == 0)
                { obj = Activator.CreateInstance(type); }
                else
                {
                    var parameters = new object[parameterInfos.Length];
                    for (int i = 0; i < parameterInfos.Length; i++)
                    {
                        if (parameterInfos[i].ParameterType.IsClass)
                        { parameters[i] = null; }
                        else
                        { parameters[i] = Activator.CreateInstance(parameterInfos[i].ParameterType); }
                    }
                    obj = Activator.CreateInstance(type, parameters);
                }
            }

            return obj;
        }
TypeHelper