代码之家  ›  专栏  ›  技术社区  ›  SkyeBoniwell

控制器类中所有方法的公共代码

  •  0
  • SkyeBoniwell  · 技术社区  · 5 年前

    我有10个控制器使用相同的代码块,但我不知道如何一次性编写代码并在任何地方使用它。

    我必须定义一个名为:

    所需的结构支持参数

    ,然后在对象中设置3个字段。

    这是使用它的控制器方法之一:

    public class StructureController : Controller
    {   
        public IActionResult Index()
        {
    
            var requiredStructuralSupportParameters = new Structure.RequiredInfo()
            {
                Steel = "1500y",
                Concrete = "5500l",
                Rebar = "95000y"
            };
    
            var response = callToAPI(requiredStructuralSupportParameters);
    
            return response.Results;
        }
    }
    

    我尝试将代码取出并放在Controller类的顶部并将其公开,但是我的控制器看不到它,我得到NullReferenceException错误。

    所以它只在我把它直接放到控制器方法中时才起作用。

    有没有一种方法可以使所有的控制器都可以重复使用同一个代码块?

    1 回复  |  直到 5 年前
        1
  •  2
  •   tlt    5 年前
    public class StructureController : Controller
    {   
        protected YourType _requiredStructuralSupportParameters;
    
        public StructureController()
        {
            this._requiredStructuralSupportParameters = new Structure.RequiredInfo()
            {
                Steel = "1500y",
                Concrete = "5500l",
                Rebar = "95000y"
            };
        }
    }
    

    然后让其他控制器继承 StructureController :

    public SomeController : StructureController{
    
       public IActionResult Index() {
          var response = callToAPI(this._requiredStructuralSupportParameters);
    
          return response.Results;
       }
    }
    

    还没有测试过,但我希望你有个想法