private static SplitTypeString ( string serializedTypeString ) : SerializedTypeData | ||
serializedTypeString | string | |
return | SerializedTypeData |
public static Type FromString(string serializedTypeString) { if (string.IsNullOrEmpty(serializedTypeString) || SerializedType.IsGeneric(serializedTypeString)) { return(null); } return(Type.GetType(SerializedType.SplitTypeString(serializedTypeString).typeName, true)); }
public static bool IsBaseTypeGeneric(string serializedTypeString) { if (string.IsNullOrEmpty(serializedTypeString)) { return(false); } SerializedType.SerializedTypeData serializedTypeData = SerializedType.SplitTypeString(serializedTypeString); return(serializedTypeData.isGeneric || serializedTypeData.genericTypeName != string.Empty); }
public static string SetGenericArgumentType(string serializedTypeString, Type type) { if (SerializedType.IsGeneric(serializedTypeString)) { SerializedType.SerializedTypeData data = SerializedType.SplitTypeString(serializedTypeString); data.genericTypeName = data.typeName; data.isGeneric = false; string typeName = data.typeName; if (typeName != null) { if (SerializedType.< > f__switch$map1 == null) { SerializedType.< > f__switch$map1 = new Dictionary <string, int>(2) { { "T", 0 }, { "T[]", 1 } }; } int num; if (SerializedType.< > f__switch$map1.TryGetValue(typeName, out num)) { if (num == 0) { data.typeName = SerializedType.ToShortTypeName(type); goto IL_105; } if (num == 1) { data.typeName = SerializedType.ToShortTypeName(type.MakeArrayType()); goto IL_105; } } } data.typeName = SerializedType.ToShortTypeName(Type.GetType(data.typeName, true).GetGenericTypeDefinition().MakeGenericType(new Type[] { type })); IL_105: return(SerializedType.ToString(data)); } if (SerializedType.IsBaseTypeGeneric(serializedTypeString)) { throw new ArgumentException("Trying to set a different generic type. Reset old one first."); } throw new ArgumentException("Trying to set generic argument type for non generic type."); }
public static string ResetGenericArgumentType(string serializedTypeString) { if (string.IsNullOrEmpty(serializedTypeString)) { throw new ArgumentException("Cannot reset generic argument type for null type."); } SerializedType.SerializedTypeData data = SerializedType.SplitTypeString(serializedTypeString); if (string.IsNullOrEmpty(data.genericTypeName)) { throw new ArgumentException("Cannot reset generic argument type, previous generic type unknown."); } data.typeName = data.genericTypeName; data.isGeneric = true; data.genericTypeName = string.Empty; return(SerializedType.ToString(data)); }
public static bool CanAssignFromGenericType(string serializedTypeString, Type t) { SerializedType.SerializedTypeData data = SerializedType.SplitTypeString(serializedTypeString); if (!data.isGeneric) { return(false); } if (!t.IsGenericType) { return(data.typeName == "T" || data.typeName == "T[]"); } if (data.typeName == "T" || data.typeName == "T[]") { return(false); } Type[] genericArguments = t.GetGenericArguments(); return(genericArguments.Length == 1 && !genericArguments[0].IsGenericType && t.GetGenericTypeDefinition() == SerializedType.FromString(data).GetGenericTypeDefinition()); }