微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

c# – 如何制作采用泛型类型的泛型方法

我想写下面的方法
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);

原文地址:https://www.jb51.cc/csharp/244391.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐