华域联盟 .Net C#可以减少或不使用switch有什么方法

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的用法实例解析

本文由 华域联盟 原创撰写:华域联盟 » C#可以减少或不使用switch有什么方法

转载请保留出处和原文链接:https://www.cnhackhy.com/48089.htm

本文来自网络,不代表华域联盟立场,转载请注明出处。

作者: sterben

发表回复

联系我们

联系我们

2551209778

在线咨询: QQ交谈

邮箱: [email protected]

工作时间:周一至周五,9:00-17:30,节假日休息

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

关注微博
返回顶部