哪些类型继承自 ICollection?

What types inherit from ICollection?

我不知道为什么我今天遇到 Google 的麻烦。我想知道什么类型(如果有的话)从 ICollection 接口继承。在保存到数据库之前将多个实体推送到 ICollection 的实例中很重要,但我不知道应该将它们具体推送到哪种类型。

更新: 问题已得到回答,但我想确保以一种不那么令人困惑的方式来表达它(第三次尝试)。更具体地说,我需要一个继承自 ICollection 的特定类型。我正在使用 entity framework 并且实体 类 包含 ICollection 类型的虚拟属性。我想通过更新主实体上的 属性 来更新相关实体。但这意味着我需要先将相关实体的所有实例推送到 ICollection 中。但是我不清楚哪些类型继承自 ICollection。

我只使用 List 对象,这通常是最容易处理的。

该代码应如下所示

var entities = new List<EntityType> { entity1, entity2 };

var entities = new List<EntityType>();
entities.add(entity1);
entities.add(entity2);

以下是ICollection备注,供大家参考:

ICollection<T> 接口是 System.Collections.Generic 命名空间中 class 的基本接口。

ICollection<T> 接口扩展了 IEnumerable<T>

IDictionary<TKey, TValue>IList<T> 是扩展 ICollection<T> 的更专用接口。 IDictionary<TKey, TValue> 实现是 key/value 对的集合,如 Dictionary<TKey, TValue> class。 IList<T> 实现是值的集合,其成员可以通过索引访问,如 List<T> class.

如果IDictionary<TKey, TValue>接口和IList<T>接口都不满足所需集合的要求,则从ICollection<T>接口派生新集合class以获取更多灵活性。

例如 IList ->

public 接口 IList : ICollection, IEnumerable https://msdn.microsoft.com/en-us/library/system.collections.ilist(v=vs.110).aspx

编辑: 实际上,您可以在此处的 "Remarks" 部分下找到答案:

https://msdn.microsoft.com/en-us/library/92t2ye13(v=vs.110).aspx

我认为没有这些类型的预制列表供您阅读。但是,您可以轻松地使用 Reflection 自己找出答案:

Type[] types = Assembly.GetAssembly(typeof(int))
                       .GetTypes()
                       .Where(t => t.GetInterfaces().Any(i => i.Name == "ICollection"))
                       .ToArray();

foreach (var type in types)
{
    Console.WriteLine(type.Name);
}

它将包括 ArrayListQueueDictionary 等类型以及所有其他传统集合类型。

(注意:并非所有列出的类型都可以公开访问,其中许多也不适用于一般用途。)