public static bool HasDefaultConstructor(Type type, bool supportInternal) { ConstructorAccessibility constructorAccessibility; PlatformTypeHelper.GetDefaultConstructor(type, supportInternal, out constructorAccessibility); ConstructorAccessibility constructorAccessibility1 = constructorAccessibility; if (constructorAccessibility1 != ConstructorAccessibility.Accessible && constructorAccessibility1 != ConstructorAccessibility.TypeIsValueType) { return(false); } return(true); }
public static ConstructorInfo GetDefaultConstructor(Type type, bool supportInternal, out ConstructorAccessibility accessibility) { if (!type.IsNested ? type.IsPublic || type.IsNotPublic && supportInternal : type.IsNestedPublic || type.IsNestedAssembly && supportInternal) { if (type.IsInterface) { accessibility = ConstructorAccessibility.TypeIsInterface; } else if (type.IsAbstract) { accessibility = ConstructorAccessibility.TypeIsAbstract; } else if (type.ContainsGenericParameters) { accessibility = ConstructorAccessibility.TypeContainsGenericParameters; } else if (type.IsValueType) { accessibility = ConstructorAccessibility.TypeIsValueType; } else { ConstructorInfo constructorInfo = (ConstructorInfo)null; try { constructorInfo = type.GetConstructor(BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic, (Binder)null, Type.EmptyTypes, (ParameterModifier[])null); } catch (Exception ex) { } if (constructorInfo != (ConstructorInfo)null) { if (constructorInfo.IsPublic || constructorInfo.IsAssembly && supportInternal) { accessibility = ConstructorAccessibility.Accessible; return(constructorInfo); } accessibility = ConstructorAccessibility.ConstructorNotAccessible; } else { accessibility = ConstructorAccessibility.ConstructorMissing; } } } else { accessibility = ConstructorAccessibility.TypeNotAccessible; } return((ConstructorInfo)null); }