时间:2021-07-01 10:21:17 帮助过:17人阅读
- <br>IGetFactory <br>using System; <br>using System.Collections.Generic; <br>using System.Linq; <br>using System.Web; <br>/// <summary> <br>/// Summary description for IGetFactory <br>/// </summary> <br>namespace Insus.NET <br>{ <br>public interface IGetFactory <br>{ <br>string GetResult(); <br>} <br>} <br> <br><strong>Get工厂类</strong>: <br><span><u></u></span> 代码如下:<pre class="brush:php;toolbar:false layui-box layui-code-view layui-code-notepad"><ol class="layui-code-ol"><li><br>GetFactory <br>using System; <br>using System.Collections.Generic; <br>using System.Linq; <br>using System.Web; <br>/// <summary> <br>/// Summary description for GetFactory <br>/// </summary> <br>namespace Insus.NET <br>{ <br>public class GetFactory : IGetFactory <br>{ <br>public GetFactory() <br>{ <br>// <br>// TODO: Add constructor logic here <br>// <br>} <br>public string GetResult() <br>{ <br>return "get"; <br>} <br>} <br>} <br> <br><strong>GetTest类</strong>: <br><span><u></u></span> 代码如下:<pre class="brush:php;toolbar:false layui-box layui-code-view layui-code-notepad"><ol class="layui-code-ol"><li><br>GetTestFactory <br>using System; <br>using System.Collections.Generic; <br>using System.Linq; <br>using System.Web; <br>/// <summary> <br>/// Summary description for GetTestFactory <br>/// </summary> <br>namespace Insus.NET <br>{ <br>public class GetTestFactory : IGetFactory <br>{ <br>public GetTestFactory() <br>{ <br>// <br>// TODO: Add constructor logic here <br>// <br>} <br>public string GetResult() <br>{ <br>return "gettest"; <br>} <br>} <br>} <br> <br><strong>以及GetSet类</strong>: <br><span><u></u></span> 代码如下:<pre class="brush:php;toolbar:false layui-box layui-code-view layui-code-notepad"><ol class="layui-code-ol"><li><br>GetSetFactory <br>using System; <br>using System.Collections.Generic; <br>using System.Linq; <br>using System.Web; <br>/// <summary> <br>/// Summary description for GetSetFactory <br>/// </summary> <br>namespace Insus.NET <br>{ <br>public class GetSetFactory : IGetFactory <br>{ <br>public GetSetFactory() <br>{ <br>// <br>// TODO: Add constructor logic here <br>// <br>} <br>public string GetResult() <br>{ <br>return "getset"; <br>} <br>} <br>} <br> <br><strong>因此你的代码最终变为</strong>: <br><span><u></u></span> 代码如下:<pre class="brush:php;toolbar:false layui-box layui-code-view layui-code-notepad"><ol class="layui-code-ol"><li><br>View Code <br>using System; <br>using System.Collections.Generic; <br>using System.Linq; <br>using System.Web; <br>using System.Web.UI; <br>using System.Web.UI.WebControls; <br>using Insus.NET; <br>public partial class _Default : System.Web.UI.Page <br>{ <br>protected void Page_Load(object sender, EventArgs e) <br>{ <br>} <br>public string Exec(string mothedName) <br>{ <br>string ret = ""; <br>//switch (mothedName) <br>//{ <br>// case "get": <br>// ret = get(); <br>// break; <br>// case "get1": <br>// ret = gettest(); <br>// break; <br>// //..... <br>// case "testget": <br>// ret = getrset(); <br>// break; <br>//} <br>IGetFactory get = new GetTestFactory(); //这里是实现工厂类 <br>ret = get.GetResult(); <br>return ret; <br>} <br>//public string get() <br>//{ <br>// return "get"; <br>//} <br>//public string gettest() <br>//{ <br>// return "gettest"; <br>//} <br>//public string getrset() <br>//{ <br>// return "getset"; <br>//} <br>} <br> <br><strong>15:50修改补充如下</strong>: <br>上面的最终代码,无传入参数mothedName,怎样办,我们可以虑一下反射,如果改为反射击,那传入的参数需要规范一下方可以: <br>"get" >>"Get"; <br>"get1" >>"GetTest" <br>"testget" >> "GetSet" <br>这样一改之后,就可以使用反射语法了,可以把 <br><span><u></u></span> 代码如下:<pre class="brush:php;toolbar:false layui-box layui-code-view layui-code-notepad"><ol class="layui-code-ol"><li><br>IGetFactory get = new GetTestFactory(); //这里是实现工厂类 <br> <br>改为(下面是asp.net的应用): <br><span><u></u></span> 代码如下:<pre class="brush:php;toolbar:false layui-box layui-code-view layui-code-notepad"><ol class="layui-code-ol"><li><br>IGetFactory get = (IGetFactory)Assembly.Load("App_Code").CreateInstance("Insus.NET." + mothedName + "Factory"); <br> <br>如果在非asp.net下,可以把"App_Code"改为"程序集名称": <br><span><u></u></span> 代码如下:<pre class="brush:php;toolbar:false layui-box layui-code-view layui-code-notepad"><ol class="layui-code-ol"><li><br>IGetFactory get = (IGetFactory)Assembly.Load("程序集名称").CreateInstance("Insus.NET." + mothedName + "Factory"); <br></li><li> </li><li> </li></ol></pre></li></ol></pre></li></ol></pre></li></ol></pre></li></ol></pre></li></ol></pre></li></ol></pre>