我正在努力制作各种自定义Collection<X, Y...> : ICollection<X>, IList<Y>
。它继承自ICollection<T>
和IList<T>
,因为我决定使用通用版本,因为它们更现代。
以下是我需要的限制:
T
的项目(值类型或引用类型)可以添加到集合中。IEnumerable<T>
或IEnumerable<IEnumerable<T>>
等等的项目,也可以添加以下内容:)如何使用这些约束创建一个Generic类,即where子句是什么?
这甚至可能吗?这是否适合使用非通用ICollection
,IList
和无泛型?
答案 0 :(得分:-1)
答案 1 :(得分:-1)
这是你想要的吗?
public interface IBlock<T>
where T : IBlock<T>
{
}
public class Block<T> : Collection<T>, IBlock<Block<T>>
{
}
class Program
{
static void Main(string[] args)
{
var list_1=new Block<int[]>();
list_1.Add(new int[] { 1, 2, 3} );
list_1.Add(new int[] { 4, 5} );
var list_2=new Block<int[]>();
list_2.Add(new int[] { -1, 4} );
list_2.Add(new int[] { 2, 6, 8} );
var list_list =new Block<Block<int[]>>();
list_list.Add(list_1);
list_list.Add(list_2);
int x=list_list[1][0][1];
// x=4
}
}