public static SmallType FromSystemType(Type pType) { if (pType.IsByRef) { pType = pType.GetElementType(); } var t = _types.FromSystemType(pType); if (t != null) { return(t); } if (pType.IsArray) { t = FromSystemType(pType.GetElementType()); t = t.MakeArrayType(); return(t); } else if (pType.IsConstructedGenericType) { var ts = pType.GetGenericArguments(); SmallType[] types = new SmallType[ts.Length]; for (int i = 0; i < ts.Length; i++) { types[i] = FromSystemType(ts[i]); } return(CreateTupleOf(types)); } if (pType.IsGenericParameter) { return(CreateGenericParameter(pType.Name)); } return(null); }