Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/321.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#_Generics_Abstract Class_Abstraction - Fatal编程技术网

C# 如何使用项目列表(从抽象类继承)作为其抽象类?

C# 如何使用项目列表(从抽象类继承)作为其抽象类?,c#,generics,abstract-class,abstraction,C#,Generics,Abstract Class,Abstraction,下面是我遇到的问题的一个简短示例 我有两个抽象类EntityAbs和ListentyAbs: 公共抽象类EntityAbs{ //将自身保存到数据库中 公共抽象int SaveEntity(); } 公共抽象类ListEntityAbs,其中T:EntityAbs{ 受保护列表; //将每个值保存到数据库中 公共虚拟存储实体() { 返回InnerList.Sum(entity=>entity.SaveEntity()); } } 在EntityAbs上创建多个类并获取其自己的ListEnti

下面是我遇到的问题的一个简短示例

我有两个抽象类EntityAbs和ListentyAbs:

公共抽象类EntityAbs{
//将自身保存到数据库中
公共抽象int SaveEntity();
}
公共抽象类ListEntityAbs,其中T:EntityAbs{
受保护列表;
//将每个值保存到数据库中
公共虚拟存储实体()
{
返回InnerList.Sum(entity=>entity.SaveEntity());
}
}
在EntityAbs上创建多个类并获取其自己的ListEntity(一个名为Item的类的示例):

公共类项:EntityAbs{
公共覆盖int SaveEntity()
{
//在这里实现如何保存它
}
}
公共类项目:ListentiesAbs,IList{
//里面有具体的课堂内容
}
现在,我想将每个ListentiesAbs保存到数据库中的其他位置

public int Save(参数listentiesabs[]列表)
{
for(int i=0;i
但是,项目(或我在这里添加的任何其他列表)显示了VisualStudio的错误,我不知道为什么。 错误表示它
无法从Items转换为listentiesabs
,但Items从listentiesabs转换为Items,从EntityAbs转换为Items

我错过什么了吗?我试过用ListentyAbs或Cast来铸造,但都不合适


非常感谢您的帮助,因为我甚至不确定这种行为是否真的可行。这意味着
listentiesabs
不是,也不能简单地转换为
listentiesabs

选项1:使
保存
通用

public int Save<T>(params ListEntitiesAbs<T>[] lists) where T:EntityAbs 
{
    for(int i = 0; i < lists.Length; i++)
       lists[i].SaveEntities();
}

选项1正是我所需要的,我感到惭愧,没有考虑它。它解决了我的兼容性问题,但是如果我在调用
Save()
方法时添加多个列表,
params
似乎不起作用,您还有其他线索吗?@arrcival
params
应该可以与泛型方法配合使用。猜测类型不匹配,即您试图调用
Save(new-listentiesabs(),new-listentiesabs())
由于上述原因,这将不起作用。如果这是一个问题,请使用选项2。根据我的示例,这是一个.NET提琴。我想这些解决方案都不管用,我不得不选择第二种方案
public interface IListEntitiesAbs {
    public int SaveEntities();
}
public int Save(params IListEntitiesAbs[] lists){
    ...
}