C# 用子类实例化父类的列表

C# 用子类实例化父类的列表,c#,.net,inheritance,polymorphism,C#,.net,Inheritance,Polymorphism,我有以下课程: public abstract class ParentCollection { public List<ParentObject> MyList { get; set; } public ParentCollection(){} } 行this.MyList=newlist()正在抛出无法隐式转换类型错误。Filter()方法也抛出类型错误 我的理解是,父对象列表应该允许使用子对象进行实例化,因为该对象继承自父对象。这里的问题是,尽管ChildObj

我有以下课程:

public abstract class ParentCollection
{
   public List<ParentObject> MyList { get; set; }

   public ParentCollection(){}
}
this.MyList=newlist()正在抛出
无法隐式转换类型错误
Filter()
方法也抛出类型错误


我的理解是,父对象列表应该允许使用子对象进行实例化,因为该对象继承自父对象。

这里的问题是,尽管
ChildObject
可以是
ParentObject
的子对象,
List
不是
List
的子对象
List
是类型为
List
的对象,
List

您可以像这样更改您的
ParentCollection
,以实现所需

abstract class ParentCollection
{
    public IEnumerable<ParentObject> MyList { get; set; }

    public ParentCollection() { }
}
抽象类ParentCollection
{
公共IEnumerable MyList{get;set;}
公共ParentCollection(){}
}

您可能还需要研究这里的问题是,尽管
ChildObject
可以是
ParentObject
的子对象,
List
不是
List
的子对象
List
是类型为
List
的对象,
List

您可以像这样更改您的
ParentCollection
,以实现所需

abstract class ParentCollection
{
    public IEnumerable<ParentObject> MyList { get; set; }

    public ParentCollection() { }
}
抽象类ParentCollection
{
公共IEnumerable MyList{get;set;}
公共ParentCollection(){}
}

您可能还需要研究这里的问题是,尽管
ChildObject
可以是
ParentObject
的子对象,
List
不是
List
的子对象
List
是类型为
List
的对象,
List

您可以像这样更改您的
ParentCollection
,以实现所需

abstract class ParentCollection
{
    public IEnumerable<ParentObject> MyList { get; set; }

    public ParentCollection() { }
}
抽象类ParentCollection
{
公共IEnumerable MyList{get;set;}
公共ParentCollection(){}
}

您可能还需要研究这里的问题是,尽管
ChildObject
可以是
ParentObject
的子对象,
List
不是
List
的子对象
List
是类型为
List
的对象,
List

您可以像这样更改您的
ParentCollection
,以实现所需

abstract class ParentCollection
{
    public IEnumerable<ParentObject> MyList { get; set; }

    public ParentCollection() { }
}
抽象类ParentCollection
{
公共IEnumerable MyList{get;set;}
公共ParentCollection(){}
}

您可能还想研究一下

问题在于,允许通过基本接口对派生类型的列表进行写访问可能会让您将错误类型的对象添加到列表中

但是,如果您只需要对列表进行枚举读取访问,则可以执行以下操作:

public abstract class ParentCollection
{
    public IEnumerable<ParentObject> MyList
    {
        get;
        set;
    }

    public ParentCollection()
    {
    }
}
公共抽象类ParentCollection
{
公共IEnumerable MyList
{
得到;
设置
}
公共收藏()
{
}
}

问题在于,允许通过基本接口对派生类型的列表进行写访问可能会让您将错误类型的对象添加到列表中

但是,如果您只需要对列表进行枚举读取访问,则可以执行以下操作:

public abstract class ParentCollection
{
    public IEnumerable<ParentObject> MyList
    {
        get;
        set;
    }

    public ParentCollection()
    {
    }
}
公共抽象类ParentCollection
{
公共IEnumerable MyList
{
得到;
设置
}
公共收藏()
{
}
}

问题在于,允许通过基本接口对派生类型的列表进行写访问可能会让您将错误类型的对象添加到列表中

但是,如果您只需要对列表进行枚举读取访问,则可以执行以下操作:

public abstract class ParentCollection
{
    public IEnumerable<ParentObject> MyList
    {
        get;
        set;
    }

    public ParentCollection()
    {
    }
}
公共抽象类ParentCollection
{
公共IEnumerable MyList
{
得到;
设置
}
公共收藏()
{
}
}

问题在于,允许通过基本接口对派生类型的列表进行写访问可能会让您将错误类型的对象添加到列表中

但是,如果您只需要对列表进行枚举读取访问,则可以执行以下操作:

public abstract class ParentCollection
{
    public IEnumerable<ParentObject> MyList
    {
        get;
        set;
    }

    public ParentCollection()
    {
    }
}
公共抽象类ParentCollection
{
公共IEnumerable MyList
{
得到;
设置
}
公共收藏()
{
}
}

Make
ParentCollection
public您应该阅读。Make
ParentCollection
public您应该阅读。Make
ParentCollection
public您应该阅读。我没有给出ParentObject和ChildObject的代码。ChildObject是ParentObject的子对象。这并不意味着List是ListObject的子对象。那么有没有办法实现我所追求的继承类型?我没有给出ParentObject和ChildObject的代码。ChildObject是ParentObject的子对象。这并不意味着List是ListObject的子对象。那么有没有办法实现我所追求的继承类型?我没有给出ParentObject和ChildObject的代码。ChildObject是ParentObject的子对象。这并不意味着List是ListObject的子对象。那么有没有办法实现我所追求的继承类型?我没有给出ParentObject和ChildObject的代码。ChildObject是ParentObject的子对象。这并不意味着List是ListObject的子对象。那么有没有办法实现我所追求的继承类型呢?