• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    C#可以减少或不使用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");
    您可能感兴趣的文章:
    • C#中的switch case使用介绍
    • c#入门之分支语句使用方法(三元运算符、if语句、switch语句)
    • choosesubject c# switch
    • c#多线程编程基础
    • C# 基础之运算符
    • C#基础:Dispose()、Close()、Finalize()的区别详解
    • 浅析C# 基础语法的使用
    • c# 接口interface基础入门小例子
    • 浅谈C#基础之类的访问修饰符
    • C#基础继承和多态详解
    • c#中switch case的用法实例解析
    上一篇:.net验证码的刷新或局部刷新的方法实例
    下一篇:图片不存在使用默认图片代替的实例
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯

    时间:9:00-21:00 (节假日不休)

    地址:江苏信息产业基地11号楼四层

    《增值电信业务经营许可证》 苏B2-20120278

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