具有继承类型的c#列表的动态实例
案例1: 我有以下情况:我想对列表应用动态多态性 我有一个基班同学具有继承类型的c#列表的动态实例,c#,list,inheritance,dynamic,polymorphism,C#,List,Inheritance,Dynamic,Polymorphism,案例1: 我有以下情况:我想对列表应用动态多态性 我有一个基班同学 public class ALayer { int Id {get; set;} } 和另一个基类A,它包含一个层列表 public class A { List<ALayer> Layers {get; set;} } 然后我的类B继承自Middle,但仍然在B构造函数中,这是我想要应用动态多态性的地方 public class B:Middle { public B(){
public class ALayer {
int Id {get; set;}
}
和另一个基类A,它包含一个层列表
public class A {
List<ALayer> Layers {get; set;}
}
然后我的类B继承自Middle,但仍然在B构造函数中,这是我想要应用动态多态性的地方
public class B:Middle {
public B(){
this.Layers = new List<BLayer>();
}
}
公共B类:中等{
公共图书馆B(){
this.Layers=新列表();
}
}
如何在中间类中组合泛型符号加上类A/< P> < P>的继承,可以使用泛型:
public abstract class ALayer
{
int Id { get; set; }
}
public abstract class A<T> where T : ALayer
{
protected List<T> Layers { get; set; }
}
public class B : A<BLayer>
{
//I want to apply the polymorphism in the constructor
public B()
{
this.Layers = new List<BLayer>();
}
}
public class BLayer : ALayer
{
int blayerattr { get; set; }
}
公共抽象类ALayer
{
int Id{get;set;}
}
公共抽象类A,其中T:ALayer
{
受保护的列表层{get;set;}
}
B级:A级
{
//我想在构造函数中应用多态性
公共图书馆B()
{
this.Layers=新列表();
}
}
公共课布莱耶:阿拉耶
{
int blayeratr{get;set;}
}
你可以在这里获得更多关于C#泛型的信息:
更新
案例2
(贷记X.L.Ant)
只要做:
public class Middle<T> : A<T>{ and then public class B : Middle<BLayer> {
public class Middle:A{然后public class B:Middle{
是我还是你对你的“B”和“C”做了完全相同的事情。然后,为了让你的问题更清楚,你应该删除“C”的情况。答案是正确的。如果你解释一下泛型不变性,会更有帮助。此外,你还可以添加类a:a
:o)这讲了一点关于Just do:公共类中产阶级:A{
然后是公共类B:Middle{
,这让人感到困惑。请编辑您的问题,或者最好接受@EduardoBrites的答案,然后再问一个新的问题。评论不适合这样做。
public abstract class ALayer
{
int Id { get; set; }
}
public abstract class A<T> where T : ALayer
{
protected List<T> Layers { get; set; }
}
public class B : A<BLayer>
{
//I want to apply the polymorphism in the constructor
public B()
{
this.Layers = new List<BLayer>();
}
}
public class BLayer : ALayer
{
int blayerattr { get; set; }
}
public class Middle<T> : A<T>{ and then public class B : Middle<BLayer> {