c# - 如何将实现公共(public)接口(interface)的集合添加在一起

标签 c# inheritance collections interface

我已经按如下方式设置了我的类(class)。 因此,这两个集合都实现了一个通用接口(interface) - IChild。

有没有办法让父级的方法返回每个集合的公共(public)部分?

我在下面使用“+”,我知道这行不通,但它表明了我正在尝试做的事情。

public interface IChild
{
    DateTime Date { get; }
    Parent Parent { get; set; }
}

public class Boy : IChild
{
    public virtual Parent Parent { get; set; }
    public virtual DateTime GraduationDate { get; set; }
    public virtual DateTime Date { get { return ProcedureDate; } }
}

public class Girl : IChild
{
    public virtual Parent Parent { get; set; }
    public virtual DateTime WeddingDate { get; set; }
    public virtual DateTime Date { get { return ContactDate; } }
}


public Parent
{
    protected IList<Boy> _boys = new List<Boy>();
    protected IList<Girl> _girls = new List<Girl>();

    public virtual IEnumerable<Boy> Boys
    {
        get { return _boys; }
    }

    public virtual IEnumerable<Girl> Girls
    {
        get { return _girls; }
    }

    public virtual IEnumerable<IChild> Children
    {
        get
        {
            return _boys + _girls;
        }
    }
}

谢谢

最佳答案

public virtual IEnumerable<IChild> Children
{
    get
    {
        return _boys.Concat<IChild>(_girls);
    }
}

关于c# - 如何将实现公共(public)接口(interface)的集合添加在一起,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7740684/

相关文章:

c# - 带和不带 .aspx 扩展名的链接

c# - 从数据表填充 SQLite 表的最快方法是什么

c# - 为什么这个短程序永远不会完成?

c++ - 如何在 JSON 中标记对象的继承?

java - 按值对 Map<Key, Value> 进行排序

c# - 如何在 .NET 中以 SOLID 方式实现库级跟踪和诊断?

c# - 从基本类型列表中返回正确的后代类型

c++ - 为什么我不能将父类(super class)引用强制转换为也扩展另一个父类(super class)的子类?

hibernate - 使用 Hibernate 等 ORM 将 ID 列表转换为对象列表

java - 如何在 Java 中将 Java 集合转换为 Kotlin 序列(反之亦然)?