c# - C#:如何表达可以从字符串转换类型的约束?
问题描述
我有以下(工作)代码:
List<string> stringList = new List<string> { "foo", "bar" };
var ret = stringList.ConvertAll(item => (MyString)item);
这很好用,因为我提供了一个显式转换运算符:
public struct MyString
{
private readonly string _myString;
public MyString(string myString)
{
_myString = myString;
}
[...]
public static explicit operator MyString(string myString)
{
return new MyString(myString);
}
}
现在我的问题是我无法在以下代码中将其表达为约束:
public List<T> conv<T>(List<string> stringList)
{
var ret = stringList.ConvertAll(item => (T)item); // <-- CS0030: Cannot convert type 'string' to 'T'
return ret;
}
where
我在这里缺少什么约束咒语?
更新:
我ConvertAll
根据以下SO帖子专门使用:
作为旁注,我使用以下方法得到完全相同的错误:
public List<T> conv<T>(List<string> stringList)
{
var ret = stringList.Select(x => (T)x).ToList();
return ret;
}
解决方案
根据@Charliefact 的建议,我实现了以下内容:
public List<T> conv<T>(List<string> stringList, Func<string,T> castFromStringConstraint)
{
var ret = stringList.ConvertAll(item => castFromStringConstraint(item));
return ret;
}
推荐阅读
- mobx - 在 mobx 模型中我应该为 RouterStore 设置哪种类型?
- vb.net - 如何声明全局变量并在函数中使用它们 [Visual Basic]
- python - Pandas 如果列包含字符串,则从另一列获取唯一值并从数据框中删除行
- python - psycopg2 不能用 docker 安装
- python - 在 Numpy 中对每次操作的浮点精度进行基准测试
- javascript - 如果用户在 Angular 10 中重新加载页面,如何维护 Firebase 数据?
- dataframe - python DataFrame中的排列
- android - 比较两个位置的 Android 移动应用程序功能
- python - 当用户输入数据太慢时发送电子邮件的功能,flask sqlalchemy
- python - 使用 pyinstaller 编译后 os.system 不起作用