源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

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

  • 时间:2022-09-25 05:25 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:C#可以减少或不使用switch有什么方法
Insus.NET的解决方法,是使用工厂方法来处理,可以创建一个工厂接口,然后每个方法设计为一个工厂类,并实现工厂接口。 [b]工厂接口[/b]:
[u]复制代码[/u] 代码如下:
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(); } }
[b]Get工厂类[/b]:
[u]复制代码[/u] 代码如下:
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"; } } }
[b]GetTest类[/b]:
[u]复制代码[/u] 代码如下:
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"; } } }
[b]以及GetSet类[/b]:
[u]复制代码[/u] 代码如下:
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"; } } }
[b]因此你的代码最终变为[/b]:
[u]复制代码[/u] 代码如下:
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"; //} }
[b]15:50修改补充如下[/b]: 上面的最终代码,无传入参数mothedName,怎样办,我们可以虑一下反射,如果改为反射击,那传入的参数需要规范一下方可以: "get" >>"Get"; "get1" >>"GetTest" "testget" >> "GetSet" 这样一改之后,就可以使用反射语法了,可以把
[u]复制代码[/u] 代码如下:
IGetFactory get = new GetTestFactory(); //这里是实现工厂类
改为(下面是asp.net的应用):
[u]复制代码[/u] 代码如下:
IGetFactory get = (IGetFactory)Assembly.Load("App_Code").CreateInstance("Insus.NET." + mothedName + "Factory");
如果在非asp.net下,可以把"App_Code"改为"程序集名称":
[u]复制代码[/u] 代码如下:
IGetFactory get = (IGetFactory)Assembly.Load("程序集名称").CreateInstance("Insus.NET." + mothedName + "Factory");
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部