在业务层中需要httpcontext值

本文关键字:httpcontext 业务 | 更新日期: 2023-09-27 18:20:48

我有一个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技术能帮我吗?

谢谢。

在业务层中需要httpcontext值

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

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

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

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