我有10个使用相同代码块的控制器,但我不知道如何编写一次代码并在各处使用它。
我必须定义一个对象:
requiredStructuralSupportParameters
,然后在对象中设置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;
}
}
我曾尝试将这些代码取出并放在控制器类的顶部并公开,但是然后我的控制器看不到它,并且出现nullreferenceexception错误。
因此,仅当我将其直接放在控制器方法中时,它才起作用。
有没有办法做到这一点,以便所有控制器都可以重用相同的代码块?
答案 0 :(得分:2)
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;
}
}
还没有测试过,但我希望你有个好主意