Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/292.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/24.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#_.net_Inheritance_Subclass_Superclass - Fatal编程技术网

C# 子类参数';未找到覆盖';

C# 子类参数';未找到覆盖';,c#,.net,inheritance,subclass,superclass,C#,.net,Inheritance,Subclass,Superclass,我有一个DataSourcesController,它具有以下方法: public abstract ActionResult<IEnumerable<DataSource>> Add(DataSourceDTO dataSourceDTO); public abstract ActionResult<IEnumerable<DataSource>> Edit(DataSourceDTO dataSourceDTO); 任何帮助我应该如何解决这是

我有一个DataSourcesController,它具有以下方法:

public abstract ActionResult<IEnumerable<DataSource>> Add(DataSourceDTO dataSourceDTO);
public abstract ActionResult<IEnumerable<DataSource>> Edit(DataSourceDTO dataSourceDTO);

任何帮助我应该如何解决这是感激的

无法使用派生类型作为参数重写该方法,因为签名不匹配。对于重写,签名应该完全匹配

但是您可以使用泛型类型

public class Base
{
    public int Id
    {
        get;
        set;
    }
}

public class Derived : Base
{
    public string Name
    {
        get;
        set;
    }
}

public class Controller<T> where T : Base, new()
{
    public virtual void Compute(T b)
    {
    }
}

public class SqlController : Controller<Derived>
{
    public override void Compute(Derived b)
    {
    }
}
公共类基
{
公共整数Id
{
得到;
设置
}
}
派生的公共类:基
{
公共字符串名
{
得到;
设置
}
}
公共类控制器,其中T:Base,new()
{
公共虚拟计算(TB)
{
}
}
公共类SqlController:Controller
{
公共覆盖无效计算(派生b)
{
}
}

您如何使用控制器?你从哪里得到这个错误?请把剩下的分享给我code@PavelAnikhouski控制器是APIController。我在控制器类中得到错误。如果我将该参数类型更改为DataSource而不是SQLDataSource,错误就会消失,但是,我认为我编写的应该可以工作,因为我正在传递它所期望的基类的子类。。
public abstract class DataSourceDTO
{ //code is in here }
public class SQLDataSourceDTO : DataSourceDTO
{ //code is in here }
public class Base
{
    public int Id
    {
        get;
        set;
    }
}

public class Derived : Base
{
    public string Name
    {
        get;
        set;
    }
}

public class Controller<T> where T : Base, new()
{
    public virtual void Compute(T b)
    {
    }
}

public class SqlController : Controller<Derived>
{
    public override void Compute(Derived b)
    {
    }
}