我有一个C#类,如下所示:
public abstract class Department<T> where T : ShoppingItem
{
protected string Name { get; set; }
protected string Description { get; set; }
}
然后我想从Department
派生两个类。这些类中的每一个还必须使用ShoppingItem
元素。在这个时候,我有:
public class ClothingDepartment<T> : Department<T> where T : ShoppingItem
{
...
}
当我尝试初始化一个ClothingDepartment
时,我得到一个错误。我尝试这样初始化它:
var department = new ClothingDepartment();
我得到的错误是Using the generic type ClothingDepartment<T> requires 1 type arguments
。我不明白这一点。
我还想在接口旁边使用一个约束。然而,我在这方面也不太走运。
发布于 2019-02-22 06:19:41
使用Shopping item创建其他类,然后可以初始化服装部门,如下所示:
var clothingDepartment = new ClothingDepartment<Shirt>();
public class Shirt : ShoppingItem
{
}
发布于 2019-02-22 04:53:17
正如错误所说,在实例化类时需要传递一个类型参数。由于对类型参数的约束,您将需要传递一个ShoppingItem类或一个从ShoppingItem继承的类。编译器将构建一个ClothingDepartment类,其中所有的"T“引用都将替换为您传递的ShoppingItem类。
在新建类时传入一个类型参数,如下所示:
var department = new ClothingDepartment<ShoppingItem>();
发布于 2019-02-22 04:56:43
如果您不习惯使用new ClothingDepartment();
,那么您的第二个类应该如下所示
public class ClothingDepartment : Department<ShoppingItem>
{
...
}
https://stackoverflow.com/questions/54815986
复制相似问题