Mat*_*ero 15 .net c# asp.net methods overloading
这是该Ok()方法的签名ApiController:
protected internal virtual OkResult Ok();
Run Code Online (Sandbox Code Playgroud)
这是我RestController班上的方法(从中扩展而来ApiController):
// Note that I'm not overriding base method
protected IHttpActionResult Ok(string message = null);
Run Code Online (Sandbox Code Playgroud)
从OkResultimplements开始IHttpActionResult,这两种方法都可以像这样调用:
IHttpActionResult result = Ok();
Run Code Online (Sandbox Code Playgroud)
事实上,这就是我在我的应用程序中所做的.
我的类PersistenceRestController(从中扩展而来RestController)具有以下代码行:
protected override async Task<IHttpActionResult> Delete(Key id)
{
bool deleted = //... Attempts to delete entity
if(deleted) return Ok();
else return NotFound();
}
Run Code Online (Sandbox Code Playgroud)
编译很好,没有关于方法歧义的警告.这是为什么?
PersistenceRestController还继承了受保护的方法,ApiController所以它应该有两个版本Ok()(它确实).
在执行时,执行的方法是我的方法RestController.
编译器如何知道要运行哪种方法?
| 归档时间: |
|
| 查看次数: |
926 次 |
| 最近记录: |