【问题标题】:How to add extension method in .Net core API controller如何在 .Net 核心 API 控制器中添加扩展方法
【发布时间】:2018-10-03 10:37:32
【问题描述】:

我必须根据我的自定义对象的某些属性修改IActionResult

我正在尝试不同的方法来改变,但都没有奏效

public static class ExtensionMethods
{

    public static IActionResult Change(this Controller controller, ExternalResponse obj)
    {
        if (case 1)
        {
            return Ok(extResp);
        }
        else if(case 2)
        {
            return NotFound(extResp);
        }
        else if(case 31)
        {
            return Unauthorized();
        }
        else
        {
            return BadRequest(extResp);
        }   
    }

    public static IActionResult ChangeTwo(this ControllerBase controller, ExternalResponse obj)
    {
        if (case 1)
        {
            return Ok(extResp);
        }
        else if(case 2)
        {
            return NotFound(extResp);
        }
        else if(case 31)
        {
            return Unauthorized();
        }
        else
        {
            return BadRequest(extResp);
        }   
    }
}

请建议我该怎么做。

【问题讨论】:

  • 您有两个返回类型为 IActionResult 的扩展方法。
  • 它们只是一个示例。我首先尝试了控制器类,然后是 ControllerBase 类,但都没有编译
  • 也许您需要先实现 IActionResult 但为什么要修改它?
  • 您究竟是如何从控制器调用这些扩展方法的?这。改变?你添加了命名空间吗?就个人而言,id 更喜欢创建自己的控制器类并放置 id 需要的常用控制器方法,并在需要时灵活地覆盖行为。示例:MyControllerBase : 控制器
  • “但都没有工作”请具体说明您的问题是什么:编译错误、运行时错误、它的行为与您的预期不符等。

标签: c# .net-core extension-methods asp.net-core-webapi asp.net-core-2.1


【解决方案1】:

其实问题是不能给抽象类添加扩展方法,ControllerBase这里是抽象类。 Here 就是为什么你不能有这样的扩展方法。

【讨论】:

  • 这似乎是一个错误的陈述。抽象类的扩展方法是可以的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-01-09
  • 1970-01-01
  • 2020-12-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多