0

我有一个 MVC4 项目,它调用一个业务层方法,其当前签名如下:

businessObject.BusinessMethod(param1, param2, param3)

在这个业务层方法中,我现在需要从HttpContext.Current.Session["SomeSessionValue"]属性中获取一些数据。

因此,我不想使用 Resharpers 重构功能添加另外两个参数,而是想将所有这三个参数组合到一个对象中,并将签名重命名如下

businessObject.BusinessMethod(myParametersObject)

这种业务层方法在整个解决方案中都使用,并且是经过测试的代码。如果我使用 resharper 修改方法签名,我现在需要在调用方法之前将 param1、param2、param3 的值分配给 MyParameters 类的对象中的相应属性businessObject.BusinessMethod(myParametersObject)

我需要在 2000 多个地方进行此更改。有没有更快的方法来进行这种更改?我不想到处手动更改代码或将 HttpContext 添加到业务层。一些OOP技术可以帮助我吗?

谢谢。

4

1 回答 1

2

使用 HttpContext 对象来传递全局对象是个坏主意。通常,业务层甚至不应该引用 System.Web。

Resharper 具有“从参数中提取类... ”重构以自动化您所描述的内容。您可以通过右键单击方法名称并选择 Refactor > Extract > Extract Class from Parameters 来访问它。然后,您可以选择要包含在类中的参数。

Resharper 将更新对方法的所有引用以创建和使用新类。

在任何情况下,超过 3 或 4 个参数是一种代码味道,表明该方法可能试图做太多事情。当您越过该阈值时,就该更改您的设计并合并参数或拆分方法了。

于 2013-07-03T14:55:32.267 回答