我想创建一个拆分扩展,它允许我将任何字符串拆分为强类型列表。我有一个良好的开端,但由于我将在许多项目中重复使用它,我想从社区获得输入(因此可以将它添加到自己的工具箱中)。分割字符串扩展与泛型类型?
public static class Converters
{
public static IEnumerable<T> Split<T>(this string source, char delimiter)
{
var type = typeof(T);
//SPLIT TO INTEGER LIST
if (type == typeof(int))
{
return source.Split(delimiter).Select(n => int.Parse(n)) as IEnumerable<T>;
}
//SPLIT TO FLOAT LIST
if (type == typeof(float))
{
return source.Split(delimiter).Select(n => float.Parse(n)) as IEnumerable<T>;
}
//SPLIT TO DOUBLE LIST
if (type == typeof(double))
{
return source.Split(delimiter).Select(n => double.Parse(n)) as IEnumerable<T>;
}
//SPLIT TO DECIMAL LIST
if (type == typeof(decimal))
{
return source.Split(delimiter).Select(n => decimal.Parse(n)) as IEnumerable<T>;
}
//SPLIT TO DATE LIST
if (type == typeof(DateTime))
{
return source.Split(delimiter).Select(n => DateTime.Parse(n)) as IEnumerable<T>;
}
//USE DEFAULT SPLIT IF NO SPECIAL CASE DEFINED
return source.Split(delimiter) as IEnumerable<T>;
}
}
您应该/可以使用else if而不是多个单个if语句。只有一个会匹配。 – mfussenegger
@mfussenegger:由于每个'if'块都包含'return'语句,所以'else'变得多余。 – Douglas
IMO,如果您的泛型方法依赖于测试泛型参数的类型,那么它可能不是泛型的好候选。 – spender