【发布时间】:2013-07-03 14:52:13
【问题描述】:
我有一个 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 技术可以帮助我吗?
谢谢。
【问题讨论】:
-
所有 2000 次调用都依赖于会话变量吗?否则,只需为执行此操作的调用创建一个新的重载。
-
重载是多参数地狱的方式,在 C# 4 中完全没有必要,因为你可以使用默认参数值
-
虽然您可能是对的,但维护通常不是理想的情况。无论如何,默认参数是重载的语法糖,各有优缺点。
-
是的。所有调用都需要将会话值发送到业务层。他们不能有默认值。他们每个人都需要从会话中获取值。
标签: c# asp.net-mvc oop c#-4.0 asp.net-mvc-4