加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net-mvc-3 – 在我的Controller中重构Switch语句

发布时间:2020-12-16 06:29:40 所属栏目:asp.Net 来源:网络整理
导读:我目前正在研究MVC.NET 3应用程序;我最近参加了“叔叔鲍勃”马丁的课程,它激励我(让我感到羞耻?)仔细研究我目前的开发实践,特别是我的重构习惯. 所以:我的一些路线符合: {控制器} / {行动} / {类型} type通常确定要返回的ActionResult的类型,例如: publi
我目前正在研究MVC.NET 3应用程序;我最近参加了“叔叔鲍勃”马丁的课程,它激励我(让我感到羞耻?)仔细研究我目前的开发实践,特别是我的重构习惯.

所以:我的一些路线符合:

{控制器} / {行动} / {类型}

type通常确定要返回的ActionResult的类型,例如:

public class ExportController
{
    public ActionResult Generate(String type,String parameters)
    {
        switch (type)
        {
            case "csv":
            //do something
            case "html":
            //do something else
            case "json":
            //do yet another thing
        }    
    }
}

有没有人成功地将“使用多态的替换开关”重构为这样的代码?这甚至是个好主意吗?很高兴听到你对这种重构的经历.

提前致谢!

解决方法

如果你想在这种情况下“用多态替换switch”,你可以创建三个重载的Generate()ActionResult方法.使用 custom model binding,使Type参数成为一个强类型的枚举,称为DataFormat(或其他).然后你有:

public ActionResult Generate(DataFormat.CSV,String parameters)
    {
    }

 public ActionResult Generate(DataFormat.HTML,String parameters)
    {
    }

 public ActionResult Generate(DataFormat.JSON,String parameters)
    {
    }

一旦达到这一点,您可以进一步重构以从控制器中重复出现.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读