C#可以减少或不使用switch有什么方法_asp.net教程-查字典教程网
C#可以减少或不使用switch有什么方法
C#可以减少或不使用switch有什么方法
发布时间:2016-12-29 来源:查字典编辑
摘要:Insus.NET的解决方法,是使用工厂方法来处理,可以创建一个工厂接口,然后每个方法设计为一个工厂类,并实现工厂接口。工厂接口:复制代码代...

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教程学习
    热门asp.net教程学习
    编程开发子分类