我不知道为什么我今天在谷歌遇到这样的麻烦。我想知道哪些类型(如果有的话)继承自ICollection接口。在保存到数据库之前将多个实体推送到ICollection的实例中非常重要,但我不知道应该将它们推入哪种类型。
更新: 问题得到了回答,但我想确保用一种不那么令人困惑的方式来表达它(第三次尝试)。更具体地说,我需要一个继承自ICollection的特定类型。我使用实体框架,实体类包含ICollection类型的虚拟属性。我想通过更新主实体上的一个属性来更新相关实体。但这意味着我需要首先将相关实体的所有实例都推送到ICollection中。但是,我不清楚哪些类型继承自ICollection。
答案 0 :(得分:2)
我只会使用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
命名空间中的类的基本接口。
ICollection<T>
界面扩展IEnumerable<T>
IDictionary<TKey, TValue>
和IList<T>
是扩展ICollection<T>
的更专业的接口。 IDictionary<TKey, TValue>
实现是键/值对的集合,如Dictionary<TKey, TValue>
类。 IList<T>
实现是值的集合,其成员可以通过索引访问,如List<T>
类。
如果IDictionary<TKey, TValue>
接口和IList<T>
接口都不满足所需集合的要求,则从ICollection<T>
接口派生新集合类,以获得更大的灵活性。
答案 1 :(得分:0)
IList例如 - &gt;
public interface IList:ICollection,IEnumerable https://msdn.microsoft.com/en-us/library/system.collections.ilist(v=vs.110).aspx
编辑: 实际上你可以在&#34;备注&#34;下找到答案。部分:
https://msdn.microsoft.com/en-us/library/92t2ye13(v=vs.110).aspx
答案 2 :(得分:0)
我不相信有这些类型的预制清单供您阅读。但是,您可以轻松使用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
以及所有其他传统集合类型等类型。
(注意:并非所有列出的类型都可以公开访问,其中许多类型也不建议用于通用目的。)