c# – 如何编写一个通用的扩展方法来将分隔的字符串转换为列表?

c# – 如何编写一个通用的扩展方法来将分隔的字符串转换为列表?,第1张

概述我们经常需要将一个字符串用一些字符分隔成一个列表.我想编写一个通用扩展方法,它将字符串转换为指定类型的列表.这是我到目前为止 public static List<T> ToDelimitedList<T>(this string value, string delimiter) { if (value == null) { retu 我们经常需要将一个字符串用一些字符分隔成一个列表.我想编写一个通用扩展方法,它将字符串转换为指定类型的列表.这是我到目前为止
public static List<T> TodelimitedList<T>(this string value,string delimiter)    {        if (value == null)        {            return new List<T>();        }        var output = value.Split(new string[] { delimiter },StringSplitoptions.RemoveEmptyEntrIEs);        return output.Select(x => (T)x).ToList();    }

但是我收到一个错误.

Cannot convert type ‘string’ to type ‘T’.

有没有更好的方法来做到这一点,或者我需要为不同类型的列表创建多个扩展方法,并做Convert.ToInt32()等等?

UPDATE

我正在尝试这样做:

var someStr = "123,4,56,78,100";List<int> intList = someStr.TodelimitedList<int>(",");

要么

var someStr = "true;false;true;true;false";List<bool> boolList = someStr.TodelimitedList<bool>(";");
解决方法 Convert.ChangeType将适用于原始和许多框架类型(假设默认解析规则足够好):
return output.Select(x => (T) Convert.ChangeType(x,typeof(T)))             .ToList();

如果您需要这样做适用于您自己的自定义类型,则必须让它们实现IConvertible接口.

请记住,这不够完善,无法使用自定义转换规则或足够强大到足以应对故障(超出抛出异常并使整个 *** 作失败).如果您需要支持,请提供接受TypeConverter或转换代理的重载(如mike z的答案).

总结

以上是内存溢出为你收集整理的c# – 如何编写一个通用的扩展方法来将分隔的字符串转换为列表?全部内容,希望文章能够帮你解决c# – 如何编写一个通用的扩展方法来将分隔的字符串转换为列表?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1261424.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-08
下一篇 2022-06-08

发表评论

登录后才能评论

评论列表(0条)

保存