我有一个控制器,每个Action共享一个特定的参数。此外,每种方法的第一行在行动中都很常见。
E.g。
public ActionResult Add(string routeName) //Common parameter
{
var object = _repository.Get(routeName); //Common line
...
}
我如何重构这一点,让我删除
var object = _repository.Get(routeName);
和/或参数,但仍然可以像以前一样访问它们吗?
编辑: 我正在使用IoC将所有存储库注入到类中,因此控制器有点不可用。
另外,我正在使用路线:
E.g。
routes.MapRoute("Object-Add", "{foo}/{object}/add", new { controller = "Object", action = "Add" });
这可能也是一个问题吗?
答案 0 :(得分:1)
创建类的“var object”成员并在构造函数中初始化它。
答案 1 :(得分:0)
将此代码放在控制器类的构造函数中,您可以从请求中获取并存储在控制器类的字段中的参数
Request.QueryString
答案 2 :(得分:0)
将它作为你班上的财产是最好的。我会使用延迟初始化,这样就可以在运行时通常创建对象,但可以在每个操作中重复使用。
答案 3 :(得分:0)
这样的东西?
public class MyClass
{
private _YourObject;
public MyClass(string routeName)
{
_yourObject = _repository.Get(routeName);
}
public ActionResult Add()
{
...
}
}