反射程序集
来源:互联网 发布:sql select where or 编辑:程序博客网 时间:2024/05/16 23:35
public void ReflectAssembly(List<DataTable> tables, string iteGuid, Dictionary<string, string> tableKeys) { string path = string.Format(@"E:\OGT\LogicCheckProcessExecutor\Build\Debug\AssemblyDirectory\TimeCopy.dll"); Assembly assembly = Assembly.LoadFile(path); string typeName = string.Format("TimeCopy. TimeCopy ");//类的FullName即”命名空间.类名”的 Type type = assembly.GetType(typeName, false, false);//根据类的名称,获得类的Type //生成控件对象 //GetConstructo()里的参数new Type[]{}是构造函数中传进去的参数的类型 //在该示例中public TimeCopy(List<DataTable> tables, string itemGuid, Dictionary<string, string> tableKeys) // : this() // { // DataSourceTables = tables; // ItemGuid = itemGuid; // TableKeys = tableKeys; // } ConstructorInfo constructInfo = type.GetConstructor(new Type[] { typeof(List<DataTable>), typeof(string), typeof(Dictionary<string, string>) }); //给构造函数里的参数传值 object obj = constructInfo.Invoke(new object[] { tables, iteGuid, tableKeys }); //注册事件 //ProcessExecuteForm是当前类的名字,因为事件方法timeCopy_EndEdit在当前类里,想注册的事件在哪个类里,前面的Type就写哪个类的Type MethodInfo myEndEditHandler = typeof(ProcessExecuteForm).GetMethod("timeCopy_EndEdit", BindingFlags.NonPublic | BindingFlags.Instance); RegisteEvent(type, obj, "EndEdit", myEndEditHandler); //展示控件 ShowForm showForm = new ShowForm();//ShowForm是一个窗体,用来展示控件 showForm.Controls.Clear(); showForm.Controls.Add(obj as UserControl);//示例TimeCopy是一个继承于UserControl的控件类 showForm.ShowDialog(); } private void RegisteEvent(Type type, object target, string eventName, MethodInfo myEndEditHandler) { EventInfo eventEndEdit = type.GetEvent(eventName);//获取事件 Type tEndEdit = eventEndEdit.EventHandlerType; //tEndEdit要创建委托的System.Type,this委托要绑定的对象,myEndEditHandler描述委托要表示的静态或实例方法 Delegate dEndEdit = Delegate.CreateDelegate(tEndEdit, this, myEndEditHandler);//创建委托 eventEndEdit.AddEventHandler(target, dEndEdit);//给事件添加委托(注册事件) } private void timeCopy_EndEdit(object sender, OGT.SJLJJC.Execute.EventAgs.EndEditEventArgs e) { // OGT.SJLJJC.Execute.EventAgs.EndEditEventArgs e是自定义的事件参数 //public class EndEditEventArgs : EventArgs //{ // public DataTable Data { get; set; } // public string ItemGuid { get; set; } // public EndEditEventArgs() // : base() // { // } //} if (e.Data == null) return; else MessageBox.Show("结束"); }
0 0
- 程序集和反射
- 程序集和反射
- C# 程序集反射
- 反射程序集
- 反射 | 程序集 | Invoke
- 怎样反射程序集?
- 反射和程序集
- 【C#反射程序集】
- 反射程序集
- 反射_程序集
- C#反射方法:程序集反射、类型反射、接口反射、类型成员反射
- C# 程序集 和 反射
- c#程序集及反射
- 程序集反射 Type 类
- 程序集加载和反射
- C#程序集和反射
- C#2.0学习--反射与程序集
- 利用反射得到程序集版本信息
- Codeforces Gym 100548H The Problem to Make You Happy (图上博弈DP)
- Java数组
- Kindle DXG和Win10 64bits无法连接的问题
- The New Year: Meeting Friends Codeforces Round#375-A
- mvc框架留言框架实战之前端功能整理
- 反射程序集
- 【C/C++】对于可重入、线程安全、异步信号安全几个概念的理解
- MySQL 如何删除有外键约束的表数据
- Prototype_Level3
- 内存对齐
- 面向对象程序设计上机练习六(类和对象)
- 编译器错误处理系统
- mysql---国庆学习第一天
- 树的基本概念