C#可以减少或不使用switch有什么方法

 更新时间:2013年03月08日 14:43:04   作者:  
减少或不使用switch,大家有什么好的方法,使用工厂方法来处理,可以创建一个工厂接口,然后每个方法设计为一个工厂类,并实现工厂接口,感兴趣的朋友可以了解下
Insus.NET的解决方法,是使用工厂方法来处理,可以创建一个工厂接口,然后每个方法设计为一个工厂类,并实现工厂接口。
工厂接口
复制代码 代码如下:

IGetFactory
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
/// <summary>
/// Summary description for IGetFactory
/// </summary>
namespace Insus.NET
{
public interface IGetFactory
{
string GetResult();
}
}

Get工厂类
复制代码 代码如下:

GetFactory
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
/// <summary>
/// Summary description for GetFactory
/// </summary>
namespace Insus.NET
{
public class GetFactory : IGetFactory
{
public GetFactory()
{
//
// TODO: Add constructor logic here
//
}
public string GetResult()
{
return "get";
}
}
}

GetTest类
复制代码 代码如下:

GetTestFactory
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
/// <summary>
/// Summary description for GetTestFactory
/// </summary>
namespace Insus.NET
{
public class GetTestFactory : IGetFactory
{
public GetTestFactory()
{
//
// TODO: Add constructor logic here
//
}
public string GetResult()
{
return "gettest";
}
}
}

以及GetSet类
复制代码 代码如下:

GetSetFactory
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
/// <summary>
/// Summary description for GetSetFactory
/// </summary>
namespace Insus.NET
{
public class GetSetFactory : IGetFactory
{
public GetSetFactory()
{
//
// TODO: Add constructor logic here
//
}
public string GetResult()
{
return "getset";
}
}
}

因此你的代码最终变为
复制代码 代码如下:

View Code
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Insus.NET;
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
public string Exec(string mothedName)
{
string ret = "";
//switch (mothedName)
//{
// case "get":
// ret = get();
// break;
// case "get1":
// ret = gettest();
// break;
// //.....
// case "testget":
// ret = getrset();
// break;
//}
IGetFactory get = new GetTestFactory(); //这里是实现工厂类
ret = get.GetResult();
return ret;
}
//public string get()
//{
// return "get";
//}
//public string gettest()
//{
// return "gettest";
//}
//public string getrset()
//{
// return "getset";
//}
}

15:50修改补充如下
上面的最终代码,无传入参数mothedName,怎样办,我们可以虑一下反射,如果改为反射击,那传入的参数需要规范一下方可以:
"get" >>"Get";
"get1" >>"GetTest"
"testget" >> "GetSet"
这样一改之后,就可以使用反射语法了,可以把
复制代码 代码如下:

IGetFactory get = new GetTestFactory(); //这里是实现工厂类

改为(下面是asp.net的应用):
复制代码 代码如下:

IGetFactory get = (IGetFactory)Assembly.Load("App_Code").CreateInstance("Insus.NET." + mothedName + "Factory");

如果在非asp.net下,可以把"App_Code"改为"程序集名称":
复制代码 代码如下:

IGetFactory get = (IGetFactory)Assembly.Load("程序集名称").CreateInstance("Insus.NET." + mothedName + "Factory");

相关文章

  • ASP.NET Core WebApi返回结果统一包装实践记录

    ASP.NET Core WebApi返回结果统一包装实践记录

    本文主要是展示了针对ASP.NET Core WeApi结果统一返回格式的相关操作,通过示例我们一步一步的展示了完成这一目标的不断升级的实现,虽然整体看起来比较简单,但是却承载着笔者一次又一次的思考升级
    2022-04-04
  • VS2022 .NET5一键发布到远程腾讯云IIS服务器的详细步骤

    VS2022 .NET5一键发布到远程腾讯云IIS服务器的详细步骤

    这篇文章主要介绍了VS2022 .NET5一键发布到远程腾讯云IIS服务器,首先需要添加服务器相关功能,文中通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-04-04
  • .NET 6中间件Http Logging使用介绍

    .NET 6中间件Http Logging使用介绍

    这篇文章介绍了.NET 6中间件Http Logging的使用方法,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-01-01
  • MVC框架是什么 这里为你解答

    MVC框架是什么 这里为你解答

    MVC是一个设计模式,它强制性的使应用程序的输入、处理和输出分开。这篇文章为大家详细介绍了MVC框架是什么,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-12-12
  • asp.net 生成数字和字母组合的随机数

    asp.net 生成数字和字母组合的随机数

    asp.net下生成数字跟字母组合的随机数,提高验证安全。
    2009-03-03
  • asp.net 删除,更新数据库方法

    asp.net 删除,更新数据库方法

    asp.net 删除,更新数据库方法
    2009-07-07
  • asp.net ListView 数据绑定

    asp.net ListView 数据绑定

    asp.net ListView 数据绑定 实现代码
    2009-01-01
  • Entity Framework使用配置伙伴创建数据库

    Entity Framework使用配置伙伴创建数据库

    这篇文章介绍了Entity Framework使用配置伙伴创建数据库的方法,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-03-03
  • 在ASP.NET Core中显示自定义的错误页面

    在ASP.NET Core中显示自定义的错误页面

    大家在用浏览器访问服务器时,不同情况下会返回不同的信息。服务器发生错误就会返回错误信息,我们最熟悉的就是404错误页面,但是这里我想和大家分享下在ASP.NET Core中如何显示自定义的500或404错误页面,有需要的朋友们可以参考借鉴,下面来一起看看吧。
    2016-12-12
  • asp.net core常见的4种数据加密算法

    asp.net core常见的4种数据加密算法

    这篇文章主要介绍了asp.net core常见的4种数据加密算法,文中代码非常详细,帮助大家更好的理解和学习,感兴趣的朋友可以了解下
    2020-06-06

最新评论