带有子类参数'找不到合适的方法来覆盖的问题'

问题描述 投票:0回答:1

我有一个具有以下方法的DataSourcesController:

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

我有一个重写这些方法的SQLDataSourcesController:

[HttpPost]
public override ActionResult<IEnumerable<DataSource>> Add(SQLDataSourceDTO sqlDataSourceDTO)
{ //code is in here }

[HttpPut]
public override ActionResult<IEnumerable<DataSource>> Edit(SQLDataSourceDTO sqlDataSourceDTO)
{ //code is in here }

但是由于出现了SQLDataSourceDTO而不是DataSourceDTO,因此出现以下错误:SQLDataSourcesController.Add(SQLDataSourceDTO': no suitable method found to overrideSQLDataSourcesController.Edit(SQLDataSourceDTO': no suitable method found to override

但是我的SQLDataSourceDTO是DataSourceDTO的子类:

public abstract class DataSourceDTO
{ //code is in here }
public class SQLDataSourceDTO : DataSourceDTO
{ //code is in here }

感谢您提供有关如何解决此问题的帮助!

c# .net inheritance subclass superclass
1个回答
0
投票

您不能覆盖具有派生类型作为参数的方法,因为签名不匹配。为了覆盖,签名应该完全匹配。

© www.soinside.com 2019 - 2024. All rights reserved.