作者热门文章
- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我想写下面的方法
private void Foo<T, TItem>(T<TItem> param1)
其中 T 必须是将 TItem 作为其通用信息的通用类型。
调用示例如下:
private void Main()
{
List<int> ints = new List<int>();
Foo<List, int>(ints);
}
编辑:在我的例子中,我只需要收集。实际用例是我想编写一个方法来向 ICollection 添加一些东西,遗憾的是 ICollection
没有 .Add
方法只有 ICollection<T>
有。
我无法将方法更改为:
private Foo<T>(ICollection<T>)
因为这样我就失去了实际列表是什么类型的信息,这对我来说比列表中项目的类型更重要。
于是萌生了上面的想法,没有成功。
最佳答案
因为你只需要为集合,你可以描述这样的方法:
private void Foo<T, TItem>(T param1)
where T: ICollection<TItem>
{
}
但是在这种情况下,您需要提供特定的通用类型 ( List<int>
) 作为第一个通用参数,您不能只使用 List
:
List<int> ints = new List<int>();
Foo<List<int>, int>(ints);
关于c# - 如何制作采用泛型类型的泛型方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35464960/
我是一名优秀的程序员,十分优秀!