首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >业务层中需要httpcontext值

业务层中需要httpcontext值
EN

Stack Overflow用户
提问于 2013-07-03 22:52:14
回答 1查看 1K关注 0票数 0

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

代码语言:javascript
运行
复制
businessObject.BusinessMethod(param1, param2, param3)

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

因此,我不想使用Resharpers重构特性再添加两个参数,而是将这三个参数合并到一个对象中,并将签名重命名如下

代码语言:javascript
运行
复制
businessObject.BusinessMethod(myParametersObject)

此业务层方法在整个解决方案中使用,并经过测试的代码。如果我使用resharper修改方法签名,那么在调用方法businessObject.BusinessMethod(myParametersObject)之前,我需要将param1、param2、param3的值赋给MyParameters类对象中的各个属性

有超过2000个地方我需要做这个改变。有没有更快的方法来实现这一改变呢?我不想在任何地方手动更改代码或将HttpContext添加到业务层。一些OOP技术能帮助我解决这个问题吗?

谢谢。

EN

回答 1

Stack Overflow用户

发布于 2013-07-03 22:55:32

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

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

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

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

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17451287

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档