在处理Web表单请求时,相同name值的数据会以逗号分隔的字符串形式提交到服务端,以下示例如何在C#中将此类字符串转换为实际需要的数据类型:
// 定义逗号分隔字符串 string value = "a,b,c,d"; // 获取泛型类型 Type type = typeof(T); // 判断泛型是否为数组 if (type.IsArray) { // 将字符串以逗号拆分 string[] values = value.Split(new string[] { "," }, StringSplitOptions.RemoveEmptyEntries); // 创建泛型对应的数组实例 Array array = (Array)Activator.CreateInstance(type, values.Length); // 获取泛型数组元素类型 Type elementType = type.GetElementType(); // 将字符串逐个转换为泛型数组元素类型,并添加到数组对应索引处 for (int i = 0, length = values.Length; i < length; i++) { array.SetValue(Convert.ChangeType(values[i], elementType), i); } // 获取泛型数组 return (T)(object)array; } else { // 不是数组则直接尝试将字符串转换为泛型类型 return (T)Convert.ChangeType(value, type); }