C#反射dll调用方法属性字段示例

时间:2019-12-16 作者:WilliamChan

老套路,直接上代码介绍怎么在C#中反射dll调用方法属性字段:



Assembly assembly = Assembly.LoadFile(AppDomain.CurrentDomain.BaseDirectory + "xxx.dll");//dll名字,或者LoadFrom
Type type = assembly.GetType("命名空间.类名");//类名
Object form1 = Activator.CreateInstance(type);//实例化引用的类名

object fbs = Convert.ChangeType(FormBorderStyle.None, type.GetProperty("FormBorderStyle").PropertyType);
type.GetProperty("FormBorderStyle").SetValue(form1, fbs, null);//设置属性

object tl = Convert.ChangeType(false, type.GetProperty("TopLevel").PropertyType);
type.GetProperty("TopLevel").SetValue(form1, tl, null);//设置属性

this.Controls.Add(form1 as Control);
this.Width = 1230;

object d = Convert.ChangeType(DockStyle.Fill, type.GetProperty("Dock").PropertyType);
type.GetProperty("Dock").SetValue(form1, d, null);//设置属性

MethodInfo DisplayeEditMode = type.GetMethod("DisplayeEditMode");//加载方法
DisplayeEditMode.Invoke(form1, new Object[] { id });//执行带一个参数的方法

object editor = type.GetField("editor").GetValue(form1);//读取字段
var parasSetShowMole = new Object[] { form1, editor, 2, hzid };//执行带三个参数的方法

MethodInfo SetShowMole = type.GetMethod("SetShowMole");//加载方法
SetShowMole.Invoke(form1, parasSetShowMole);//执行

MethodInfo mShow = type.GetMethod("Show", new Type[] { });//加载无参数的方法(此处需特别注意重载的方法)
mShow.Invoke(form1, new object[] { });//执行无参数的方法

声明:若您对本文内容有任何意见,欢迎发送邮件至:admin@zhidaobu.com,本站会尽快回应并做出相应处理。