主程序
<a href="https://s5.51cto.com/wyfs02/M02/8F/5B/wKioL1jbuRzCL0WTAAGvjUSnwGQ637.jpg-wh_500x0-wm_3-wmp_4-s_3379611223.jpg" target="_blank"></a>
<code>using</code> <code>System;</code>
<code>using</code> <code>System.Collections.Generic;</code>
<code>using</code> <code>System.Linq;</code>
<code>using</code> <code>System.Reflection;</code>
<code>using</code> <code>System.Web;</code>
<code>using</code> <code>System.Web.UI;</code>
<code>using</code> <code>System.Web.UI.WebControls;</code>
<code>using</code> <code>Test0326;</code>
<code>namespace</code> <code>WebApplication19</code>
<code>{</code>
<code> </code><code>public</code> <code>partial </code><code>class</code> <code>WebForm1 : System.Web.UI.Page</code>
<code> </code><code>{</code>
<code> </code><code>protected</code> <code>void</code> <code>Page_Load(</code><code>object</code> <code>sender, EventArgs e)</code>
<code> </code><code>{</code>
<code> </code><code>Assembly myAssembly = Assembly.LoadFrom(Server.MapPath(</code><code>"bin/Test0326.dll"</code><code>));</code>
<code> </code><code>//获取类型信息</code>
<code> </code><code>Type t = myAssembly.GetType(</code><code>"Test0326.TestClass"</code><code>);</code>
<code> </code><code>//构造器的参数</code>
<code> </code><code>object</code><code>[] constuctParms = </code><code>new</code> <code>object</code><code>[] {</code><code>"timmy"</code><code>};</code>
<code> </code><code>//根据类型创建对象</code>
<code> </code><code>object</code> <code>dObj = Activator.CreateInstance(t, constuctParms);</code>
<code> </code><code>//获取方法的信息</code>
<code> </code><code>MethodInfo method = t.GetMethod(</code><code>"GetValue"</code><code>);</code>
<code> </code><code>//调用方法的一些标志位,这里的含义是Public并且是实例方法,这也是默认的值</code>
<code> </code><code>BindingFlags flag = BindingFlags.Public | BindingFlags.Instance;</code>
<code> </code><code>//GetValue方法的参数</code>
<code> </code><code>object</code><code>[] parameters = </code><code>new</code> <code>object</code><code>[] { </code><code>"Hi"</code> <code>};</code>
<code> </code><code>//调用方法,用一个object接收返回值</code>
<code> </code><code>TextBox1.Text = method.Invoke(dObj, flag, Type.DefaultBinder, parameters, </code><code>null</code><code>) </code><code>as</code> <code>string</code><code>;</code>
<code> </code><code>}</code>
<code> </code><code>}</code>
<code>}</code>
Test0326.dll 程序集代码
<code>using</code> <code>System.Text;</code>
<code>using</code> <code>System.Threading.Tasks;</code>
<code>namespace</code> <code>Test0326</code>
<code> </code><code>public</code> <code>class</code> <code>TestClass</code>
<code> </code><code>private</code> <code>string</code> <code>_value;</code>
<code> </code><code>public</code> <code>TestClass()</code>
<code> </code><code>public</code> <code>TestClass(</code><code>string</code> <code>value)</code>
<code> </code><code>_value = value;</code>
<code> </code><code>public</code> <code>string</code> <code>GetValue(</code><code>string</code> <code>prefix)</code>
<code> </code><code>if</code> <code>(_value == </code><code>null</code><code>)</code>
<code> </code><code>return</code> <code>"NULL"</code><code>;</code>
<code> </code><code>else</code>
<code> </code><code>return</code> <code>prefix + </code><code>" : "</code> <code>+ _value;</code>
<code> </code><code>public</code> <code>string</code> <code>Value</code>
<code> </code><code>set</code>
<code> </code><code>{</code>
<code> </code><code>_value = value;</code>
<code> </code><code>}</code>
<code> </code><code>get</code>
<code> </code><code>if</code> <code>(_value == </code><code>null</code><code>)</code>
<code> </code><code>return</code> <code>"NULL"</code><code>;</code>
<code> </code><code>else</code>
<code> </code><code>return</code> <code>_value;</code>
参考链接:
<a href="http://www.cnblogs.com/wangshenhe/p/3256657.html" target="_blank">http://www.cnblogs.com/wangshenhe/p/3256657.html</a>
本文转自daniel8294 51CTO博客,原文链接:http://blog.51cto.com/acadia627/1910538,如需转载请自行联系原作者