Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/267.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用继承的对象作为参数创建对象_C#_Inheritance_Base - Fatal编程技术网

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) 我真的不知道是什么

我对C#中的继承和构造函数有一个问题

实际上,我创建了一个类元素和从中继承的类,如窗口或消息

在某种程度上,我希望另一个类在其构造函数中使用元素列表,以便它可以同时使用窗口和消息。但是,当我创建新对象时,它只需要基本类型元素

因此,我不能创造这样的东西:

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(列表项)
{
}
}

请显示一套完整的类定义等。