示例#1
0
        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);
        }
示例#2
0
 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);
 }