哪些类型继承自 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);
}
它将包括 Array
、List
、Queue
、Dictionary
等类型以及所有其他传统集合类型。
(注意:并非所有列出的类型都可以公开访问,其中许多也不适用于一般用途。)
我不知道为什么我今天遇到 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);
}
它将包括 Array
、List
、Queue
、Dictionary
等类型以及所有其他传统集合类型。
(注意:并非所有列出的类型都可以公开访问,其中许多也不适用于一般用途。)