C#:在方法调用事件上? (重构我的代码)

时间:2011-05-06 11:43:08

标签: c# refactoring

我有一个控制器,每个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" });

这可能也是一个问题吗?

4 个答案:

答案 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()
   {
      ...
   }

}