public static bool CanBeGeneratedUniquely(Type typeArgument) { return(typeArgument.IsEnum || typeof(string).IsAssignableFrom(typeArgument) || GenericFlowSwitchHelper.IsIntegralType(typeArgument) || typeof(bool) == typeArgument); }
public static string GenericGetCaseName <T>(ModelItemCollection collection, out string errorMessage) { int maxName = 100000; Type type = typeof(T); errorMessage = string.Empty; if (typeof(string).IsAssignableFrom(type)) { string caseName = "caseN"; for (int i = 1; i <= maxName; i++) { caseName = string.Format(CultureInfo.InvariantCulture, SR.CaseFormat, i); if (!GenericFlowSwitchHelper.ContainsCaseKey(collection, caseName)) { break; } } return(caseName); } else if (GenericFlowSwitchHelper.IsIntegralType(type)) { if (type == typeof(sbyte)) { sbyte maxCount = (sbyte.MaxValue < maxName) ? sbyte.MaxValue : (sbyte)maxName; for (sbyte i = 0; i <= maxCount; i++) { if (!GenericFlowSwitchHelper.ContainsCaseKey(collection, i)) { return(GenericFlowSwitchHelper.GetString(i, type)); } } } else if (type == typeof(byte)) { byte maxCount = (byte.MaxValue < maxName) ? byte.MaxValue : (byte)maxName; for (byte i = 0; i <= maxCount; i++) { if (!GenericFlowSwitchHelper.ContainsCaseKey(collection, i)) { return(GenericFlowSwitchHelper.GetString(i, type)); } } } else if (type == typeof(char)) { char maxCount = unchecked ((char)maxName); for (char i = (char)48; i <= maxCount; i++) { if (!GenericFlowSwitchHelper.ContainsCaseKey(collection, i)) { return(GenericFlowSwitchHelper.GetString(i, type)); } } } else if (type == typeof(short)) { short maxCount = (short)maxName; for (short i = 0; i <= maxCount; i++) { if (!GenericFlowSwitchHelper.ContainsCaseKey(collection, i)) { return(GenericFlowSwitchHelper.GetString(i, type)); } } } else if (type == typeof(ushort)) { ushort maxCount = (ushort)maxName; for (ushort i = 0; i <= maxCount; i++) { if (!GenericFlowSwitchHelper.ContainsCaseKey(collection, i)) { return(GenericFlowSwitchHelper.GetString(i, type)); } } } else if (type == typeof(int)) { for (int i = 0; i <= maxName; i++) { if (!GenericFlowSwitchHelper.ContainsCaseKey(collection, i)) { return(GenericFlowSwitchHelper.GetString(i, type)); } } } else if (type == typeof(uint)) { for (uint i = 0; i <= (uint)maxName; i++) { if (!GenericFlowSwitchHelper.ContainsCaseKey(collection, i)) { return(GenericFlowSwitchHelper.GetString(i, type)); } } } else if (type == typeof(long)) { for (long i = 0; i <= (long)maxName; i++) { if (!GenericFlowSwitchHelper.ContainsCaseKey(collection, i)) { return(GenericFlowSwitchHelper.GetString(i, type)); } } } else if (type == typeof(ulong)) { for (ulong i = 0; i <= (ulong)maxName; i++) { if (!GenericFlowSwitchHelper.ContainsCaseKey(collection, i)) { return(GenericFlowSwitchHelper.GetString(i, type)); } } } errorMessage = SR.InvalidFlowSwitchCaseMessage; return(string.Empty); } else if (type.IsEnum) { Array array = type.GetEnumValues(); foreach (object value in array) { if (!GenericFlowSwitchHelper.ContainsCaseKey(collection, value)) { return(GenericFlowSwitchHelper.GetString(value, type)); } } errorMessage = SR.InvalidFlowSwitchCaseMessage; return(string.Empty); } else if (type == typeof(bool)) { if (!GenericFlowSwitchHelper.ContainsCaseKey(collection, true)) { return(GenericFlowSwitchHelper.GetString(true, type)); } else if (!GenericFlowSwitchHelper.ContainsCaseKey(collection, false)) { return(GenericFlowSwitchHelper.GetString(false, type)); } errorMessage = SR.InvalidFlowSwitchCaseMessage; return(string.Empty); } return(string.Empty); }