C# 使用继承的对象作为参数创建对象
我对C#中的继承和构造函数有一个问题 实际上,我创建了一个类元素和从中继承的类,如窗口或消息 在某种程度上,我希望另一个类在其构造函数中使用元素列表,以便它可以同时使用窗口和消息。但是,当我创建新对象时,它只需要基本类型元素 因此,我不能创造这样的东西:C# 使用继承的对象作为参数创建对象,c#,inheritance,base,C#,Inheritance,Base,我对C#中的继承和构造函数有一个问题 实际上,我创建了一个类元素和从中继承的类,如窗口或消息 在某种程度上,我希望另一个类在其构造函数中使用元素列表,以便它可以同时使用窗口和消息。但是,当我创建新对象时,它只需要基本类型元素 因此,我不能创造这样的东西: obj = new Obj(List<Window> w) obj=新的obj(列表w) 它只允许 obj = new Obj(List<Elements> e) obj=新的obj(列表e) 我真的不知道是什么
obj = new Obj(List<Window> w)
obj=新的obj(列表w)
它只允许
obj = new Obj(List<Elements> e)
obj=新的obj(列表e)
我真的不知道是什么问题。我试图将Elements类设置为抽象类,因为我永远不需要创建对象“Element”,但它仍然不起作用
如果有人能帮忙,那就太好了:)
谢谢 List
不是协变的,因此如果构造函数需要List
,则无法传递List
使用IEnumerable
获取协方差
或者使用泛型约束将类设置为泛型:
public class MyClass<T> where T : Element
{
public MyClass(List<T> items)
{
}
}
公共类MyClass,其中T:Element
{
公共MyClass(列表项)
{
}
}
请显示一套完整的类定义等。