我有一个调用业务层方法的MVC4项目,该方法的当前签名如下:
businessObject.BusinessMethod(param1, param2, param3)在这个业务层方法中,我现在需要一些来自HttpContext.Current.Session["SomeSessionValue"]属性的数据。
因此,我不想使用Resharpers重构特性再添加两个参数,而是将这三个参数合并到一个对象中,并将签名重命名如下
businessObject.BusinessMethod(myParametersObject)此业务层方法在整个解决方案中使用,并经过测试的代码。如果我使用resharper修改方法签名,那么在调用方法businessObject.BusinessMethod(myParametersObject)之前,我需要将param1、param2、param3的值赋给MyParameters类对象中的各个属性
有超过2000个地方我需要做这个改变。有没有更快的方法来实现这一改变呢?我不想在任何地方手动更改代码或将HttpContext添加到业务层。一些OOP技术能帮助我解决这个问题吗?
谢谢。
发布于 2013-07-03 22:55:32
使用HttpContext对象传递全局对象不是一个好主意。通常,业务层甚至不应该有对System.Web的引用。
Resharper具有"Extract Class from Parameters ...“重构功能,可以自动执行您所描述的内容。您可以通过右键单击方法的名称并选择Refactor > Extract > Extract Class from Parameters来访问它。然后,您可以选择要包含在类中的参数。
Resharper将更新对该方法的所有引用,以创建和使用新类。
在任何情况下,超过3或4个参数是一种代码气味,这表明该方法可能正在尝试做太多的事情。当你跨过这个门槛时,是时候改变你的设计了,要么合并参数,要么拆分方法。
https://stackoverflow.com/questions/17451287
复制相似问题