C# 子类参数';未找到覆盖';
我有一个DataSourcesController,它具有以下方法: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); 任何帮助我应该如何解决这是
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)
{
}
}