如何使用我的自定义方法扩展Controller类

时间:2018-10-09 11:54:01

标签: c# asp.net asp.net-core

我想轻松地从扩展控制器类中获取方法,并向Controller类中添加一些方法,以便在所有其他控制器中使用,例如:

扩展

public string GetString()
{
    return "iamanexample";
}

AuthenticationController

public class AuthenticationController : Controller
{
   public IActionResult Index()
   {
       string getMyStr = GetString();
       return View();
   }
}

我是否必须创建一个由Controller类继承的自定义类,并在其中添加我的方法,然后使用我的自定义控制器类?还是有其他解决方案?

2 个答案:

答案 0 :(得分:2)

您可以继承,也可以创建Controller的扩展方法,我更喜欢后者。

要创建扩展方法,可以创建一个静态类,并在该类中创建一个静态方法。

public static class ControllerExtensions
{
     public static string GetString(this Controller controller)
     {
          return "iamanexample";
     } 
}

然后,您可以通过编写任何代码轻松地通过任何控制器对其进行访问

string exampleString = this.GetString();

答案 1 :(得分:1)

是的,这是继承的理想方案。创建一个新的控制器基类:

public abstract class ControllerBase : Controller 
{
    public string GetString()
    {
        return "iamanexample";
    }
}

继承为:

public class AuthenticationController : ControllerBase
{}