private static bool IsNullable(Type type) { return TypeCoercionUtility.GetTypeInfo(type).IsGenericType && (typeof(Nullable<>).Equals (type.GetGenericTypeDefinition())); }
private static bool IsNullable(Type type) { return type.IsGenericType && (typeof(Nullable<>) == type.GetGenericTypeDefinition()); }
public static MethodInfo GetMethod (Type type, MethodInfo method) { if (!IsValidGetMethodType (type)) throw new ArgumentException ("type is not TypeBuilder but " + type.GetType (), "type"); if (type is TypeBuilder && type.ContainsGenericParameters) type = type.MakeGenericType (type.GetGenericArguments ()); if (!type.IsGenericType) throw new ArgumentException ("type is not a generic type", "type"); if (!method.DeclaringType.IsGenericTypeDefinition) throw new ArgumentException ("method declaring type is not a generic type definition", "method"); if (method.DeclaringType != type.GetGenericTypeDefinition ()) throw new ArgumentException ("method declaring type is not the generic type definition of type", "method"); if (method == null) throw new NullReferenceException (); //MS raises this instead of an ArgumentNullException MethodInfo res = type.GetMethod (method); if (res == null) throw new ArgumentException (String.Format ("method {0} not found in type {1}", method.Name, type)); return res; }
public static FieldInfo GetField (Type type, FieldInfo field) { if (!type.IsGenericType) throw new ArgumentException ("Type is not a generic type", "type"); if (type.IsGenericTypeDefinition) throw new ArgumentException ("Type cannot be a generic type definition", "type"); if (field is FieldOnTypeBuilderInst) throw new ArgumentException ("The specified field must be declared on a generic type definition.", "field"); if (field.DeclaringType != type.GetGenericTypeDefinition ()) throw new ArgumentException ("field declaring type is not the generic type definition of type", "method"); FieldInfo res = type.GetField (field); if (res == null) throw new System.Exception ("field not found"); else return res; }
public static ConstructorInfo GetConstructor (Type type, ConstructorInfo constructor) { /*FIXME I would expect the same checks of GetMethod here*/ if (type == null) throw new ArgumentException ("Type is not generic", "type"); if (!type.IsGenericType) throw new ArgumentException ("Type is not a generic type", "type"); if (type.IsGenericTypeDefinition) throw new ArgumentException ("Type cannot be a generic type definition", "type"); if (constructor == null) throw new NullReferenceException (); //MS raises this instead of an ArgumentNullException if (!constructor.DeclaringType.IsGenericTypeDefinition) throw new ArgumentException ("constructor declaring type is not a generic type definition", "constructor"); if (constructor.DeclaringType != type.GetGenericTypeDefinition ()) throw new ArgumentException ("constructor declaring type is not the generic type definition of type", "constructor"); ConstructorInfo res = type.GetConstructor (constructor); if (res == null) throw new ArgumentException ("constructor not found"); return res; }