将两个扩展函数合并为一个
本文关键字:一个 合并 两个 扩展 函数 | 更新日期: 2023-09-27 17:59:43
我有两个扩展函数,它们对List<int>
和List<string>
进行操作。
public static string StringTokenizr(this List<int> list, NpStringTokenizrType type, string splitter = ",")
{
return string.Join(",", list.ConvertAll(name => string.Format(type == NpStringTokenizrType.StringLike ? "'{0}'" : "{0}", name.ToString().Replace("'", "'''"))));
}
public static string StringTokenizr(this List<string> list, NpStringTokenizrType type, string splitter = ",")
{
return string.Join(",", list.ConvertAll(name => string.Format(type == NpStringTokenizrType.StringLike ? "'{0}'" : "{0}", name.ToString().Replace("'", "'''"))));
}
有没有什么方法可以让它更通用,这样它就可以只是一个函数?
使您的方法通用:
public static string StringTokenizr<T>(
this List<T> list,
NpStringTokenizrType type,
string splitter = ",")
{
return string.Join(",", list.ConvertAll(name => string.Format(type == NpStringTokenizrType.StringLike ? "'{0}'" : "{0}", name.ToString().Replace("'", "'''"))));
}
通过这种方式,您可以使其通用,但此函数将不限于int和string,它将接受其他类型的
public static string StringTokenizr<T>(this List<T> list, NpStringTokenizrType type, string splitter = ",")
{
return string.Join(",", list.ConvertAll(name => string.Format(type == NpStringTokenizrType.StringLike ? "'{0}'" : "{0}", name.ToString().Replace("'", "'''"))));
}
使用像List<T>
这样的泛型Type参数并检查函数体中的类型,或者将List
强制转换为进入函数的string
。