大雀软件园

首页 软件下载 安卓市场 苹果市场 电脑游戏 安卓游戏 文章资讯 驱动下载
技术开发 网页设计 图形图象 数据库 网络媒体 网络安全 站长CLUB 操作系统 媒体动画 安卓相关
当前位置: 首页 -> 技术开发 -> NET专区 -> 如何动态加载控件以及插件编程思想(C#)

如何动态加载控件以及插件编程思想(C#)

时间: 2021-07-31 作者:daque

要害词:动静加载,控件,插件 控件,在实行赶快开拓中起着特殊要害的效率,它不妨将某一一定功效封装起来,供可户步调员挪用,更要害的是它还不妨实行插件式开拓,使软硬件的精巧性、可夸大性大大巩固。在搜集上,也有很多动静加载控件、动静挪用类分子等的材料。底下,我就将动静加载控件归纳一下,以供大师参考。(然而因为自己程度有限,不确定有参考价格,写出来一上面是为了归纳本人,以求普及,另一上面也蓄意各为伙伴看到我的不及,给我提出珍贵看法)一、动静加载控件 动静加载,最基础用到的即是曲射体制。在system.reflection的namespace下有一系列的对于获得assembly消息、类(型)消息的类、接口、构造等。大概上头的话对急促想实行动静加载控件的伙伴来说大概一点用也没有,那么就看底下的代码吧,大概不妨使你赶快实行你想要的: //加载控件 assembly assembly = assembly.loadfrom(@"c:\controls.dll"); //赢得类(型) type type = assembly.gettype("controls.usercontrol",false,true); //树立挑选标记 bindingflags bflags = bindingflags.declaredonly | bindingflags.public | bindingflags.nonpublic | bindingflags.instance; //挪用结构因变量并赢得东西 object obj = type.invokemember("usercontrol", bflags | bindingflags.createinstance, null, null, null); //将东西变换典型 system.windows.forms.control c = (control)obj; //将控件增添到窗体 this.controls.add(c);下面临上头步调段用到的少许变量、本领做一点证明1、bindingflags,列举典型 bindingflags.instance : 东西范例 bindingflags.static : 静态分子 bindingflags.public : 指可在探求中包括大众分子 bindingflags.nonpublic : 指可在探求中包括非大众分子(即独占分子和受养护的分子) bindingflags.flattenhierarchy : 指可包括档次构造上的静态分子 bindingflags.ignorecase : 表白忽视 name 的巨细写 bindingflags.declaredonly : 仅探求 type 上证明的分子,而不探求被大略接受的分子 bindingflags.createinstance : 表白挪用结构因变量。忽视 name。对其余挪用标记失效2、type.invokememberpublic object invokemember( string name, bindingflags invokeattr, binder binder, object target, object[] args);参数 name string,它包括要挪用的结构因变量、本领、属性或字段分子的称呼。 - 或 - 空字符串 (""),表白挪用默许分子。 invokeattr 一个位樊篱,由一个或多个指定探求实行办法的 bindingflags 构成。 考察不妨是 bindingflags 之一,如public、 nonpublic、private、 invokemethod 和 getfield 等。不须要指定搜索典型。即使简略搜索典型, 则将运用 bindingflags.public | bindingflags.instance。 binder 一个 binder 东西,该东西设置一组属性并起用绑定,而绑定大概波及采用重载本领、 强迫参数典型和经过曲射挪用成 员。 - 或 - 若为空援用(visual basic 中为 nothing),则运用 defaultbinder。 target 要在其上挪用指定分子的 object。 args 包括传播给要挪用的分子的参数的数组。 归来值 表白被挪用分子的归来值的 object。二、插件编制程序 经过上头代码段,咱们基础实行动静加载控件。由此我想到了此刻网上提到很多的插件式的开拓本领。经过动静加载控件,咱们不是能很简单的为软硬件夸大功效吗?我不领会eclipse这种插件是如何实行的,但起码这种动静加载控件的本领实行插件编制程序的一个灵活的本领。不是吗?我把一个功效模块做出一个控件,而后在步调启用是扫描目次,即可赢得一切的控件,当点击菜单是,将控件加载到窗体就行了。我在母体步调里,咱们所要做的只然而要一个容器窗口类来加载控件。固然,事前要有些商定,比方说,控件有哪些可供挪用的本领之类。参考材料:1. (c#)运用曲射动静挪用类分子 作家: lizanhong 2. 在c#步调中实行插件框架结构 作家:shawn patrick walcheske 翻译:电子高科技大学 夏桅3. building .net assemblies dynamically 作家: govinda

热门阅览

最新排行

Copyright © 2019-2021 大雀软件园(www.daque.cn) All Rights Reserved.