【问题标题】:Which concrete type can I use to instantiate a variable of type ICollection<T> [closed]我可以使用哪种具体类型来实例化 ICollection<T> 类型的变量 [关闭]
【发布时间】:2014-08-30 19:59:27
【问题描述】:

我有一堂课:

public class A {
        public int Id { set; get; }
        public virtual ICollection<B> Bs { set; get; }
}

我想向类A 添加一个构造函数,它实例化ICollection 类型的属性。我可以使用什么类型的?

【问题讨论】:

    标签: c# asp.net-mvc entity-framework collections


    【解决方案1】:

    实例化ICollection...

    public class A {
        public A() 
        {
            this.Bs = new Collection<B>();
        }
    
        public int Id { get; set; }
        public virtual ICollection<B> Bs { get; set; }
    }
    

    这里是对您可能会发现有用的接口的快速介绍...

    ICollectionInterface,这意味着它是ContractClass

    例如,如果我说Car 必须有多个Seats,我将创建一个名为ICarInterface,并在其上创建一个名为Seats 的属性。

    public interface ICar {
        int Seats { get; set; }
    }
    

    由于这只是一个Interface,我们不能直接实例化它,我们需要一个Class 来实现这个契约。

    public class Car : ICar {
        public int Seats {get; set; }
    }
    

    现在我们可以实例化ICar car = new Car();,因为Class Car 实现了ICar 接口。这与Collection 类和List 类内部发生的情况没有什么不同,它们都实现了ICollection。

    【讨论】:

    • 感谢您的建议。我想知道我应该使用new Collection&lt;B&gt;(); 还是new List&lt;B&gt; 我不知道使用哪个Entity Framework。
    • 没关系,你可以使用任何一个,因为它们都实现了ICollection。
    • 我已更新我的答案以提供更深入的解释,如果您发现此答案有帮助,请将其标记为所选答案,谢谢。
    猜你喜欢
    • 2020-11-25
    • 2021-05-11
    • 2018-10-14
    • 1970-01-01
    • 2021-10-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多