插件式(AddIn)架构,不是一个新名词,应用程序采用插件式拼合,可以更好的支持扩展。很多著名的软件都采用了插件式的架构,如常见的IDE:Eclipse,Visual Studio,SharpDevelop等等。

这些插件式架构在实现上各有特色,但是基本原理大致相同:
定义插件框架,用来下载,创建,销毁插件,并管理插件间的通信等等。
定义插件契约,定义统一的接口规范。获取源码

  1. private void btLogin_Click(object sender, EventArgs e)
  2. {
  3. try
  4. {
  5. string ip = NetworkUtil.GetLocalIP();
  6. string macAddr = HardwareInfoHelper.GetMacAddress();
  7. string loginName = this.cmbzhanhao.Text.Trim();
  8. string identity = WHC.Security.BLL.BLLFactory<WHC.Security.BLL.User>.Instance.VerifyUser(loginName, this.tbPass.Text, Portal.gc.SystemType, ip, macAddr);
  9. if (!string.IsNullOrEmpty(identity))
  10. {
  11. UserInfo info = WHC.Security.BLL.BLLFactory<WHC.Security.BLL.User>.Instance.GetUserByName(loginName);
  12. if (info != null)
  13. {
  14. #region 获取用户的功能列表
  15.  
  16. List<FunctionInfo> list = WHC.Security.BLL.BLLFactory<WHC.Security.BLL.Function>.Instance.GetFunctionsByUser(info.ID, Portal.gc.SystemType);
  17. if (list != null && list.Count > )
  18. {
  19. foreach (FunctionInfo functionInfo in list)
  20. {
  21. if (!Portal.gc.FunctionDict.ContainsKey(functionInfo.ControlID))
  22. {
  23. Portal.gc.FunctionDict.Add(functionInfo.ControlID, functionInfo.ControlID);
  24. }
  25. }
  26. }
  27.  
  28. #endregion
  29.  
  30. bLogin = true;
  31. Portal.gc.UserInfo = info;
  32. Portal.gc.LoginUserInfo = ConvertToLoginUser(info);
  33.  
  34. this.DialogResult = DialogResult.OK;
  35. }
  36. }
  37. else
  38. {
  39. MessageDxUtil.ShowTips("用户帐号密码不正确");
  40. this.tbPass.Text = ""; //设置密码为空
  41. }
  42. }
  43. catch (Exception err)
  44. {
  45. MessageDxUtil.ShowError(err.Message);
  46. }
  47. }

Winfom 插件式(Plugins)/模块化开发框架-动态加载DLL窗体-Devexpress的更多相关文章

  1. c#实现动态加载Dll(转)

    c#实现动态加载Dll 分类: .net2009-12-28 13:54 3652人阅读 评论(1) 收藏 举报 dllc#assemblynullexceptionclass 原理如下: 1.利用反 ...

  2. 用宏定义封装LoadLibrary,方便的动态加载dll

    同学们动态加载dll的时候是不是感觉挺麻烦的,每次都::LoadLibrary,::GetProcAddress,还要typedef一堆函数.最近闲来无聊,用宏封装了一下,可以少写不少代码,用来也挺方 ...

  3. Delphi静态加载DLL和动态加载DLL示例

    下面以Delphi调用触摸屏动态库xtkutility.dll为例子,说明如何静态加载DLL和动态加载DLL. 直接上代码. 1.静态加载示例 unit Unit1; interface uses W ...

  4. C# 利用反射动态加载dll

    笔者遇到的一个问题,dll文件在客户端可以加载成功,在web端引用程序报错.解决方法:利用反射动态加载dll 头部引用加: using System.Reflection; 主要代码: Assembl ...

  5. unity3d动态加载dll的API以及限制

    Unity3D的坑系列:动态加载dll 一.使用限制 现在参与的项目是做MMO手游,目标平台是Android和iOS,iOS平台不能动态加载dll(什么原因找乔布斯去),可以直接忽略,而在Androi ...

  6. Unity3D的坑系列:动态加载dll

    我现在参与的项目是做MMO手游,目标平台是Android和iOS,iOS平台不能动态加载dll(什么原因找乔布斯去),可以直接忽略,而在Android平台是可以动态加载dll的,有了这个就可以实现代码 ...

  7. C#,动态加载DLL,通过反射,调用参数,方法,窗体

    .net中常会用到动态加载DLL,而DLL中可能包含各种参数.方法.窗体,如何来调用动态加载这些参数.方法.窗体呢? 在C#中,我们要使用反射,首先要搞清楚以下命名空间中几个类的关系: System. ...

  8. 动态加载Dll时,通过Type生成类对象

    原文:动态加载Dll时,通过Type生成类对象 转:http://www.cnblogs.com/zfanlong1314/p/4197383.html "反射"其实就是利用程序集 ...

  9. c#实现动态加载Dll

    原文:c#实现动态加载Dll 原理如下: 1.利用反射进行动态加载和调用. Assembly assembly=Assembly.LoadFrom(DllPath); //利用dll的路径加载,同时将 ...

随机推荐

  1. sqlalchemy常用语法

    一.新增数据 # 新增一条数据 user_obj = User(name="bigberg", passwd="twgdh123") Session.add(u ...

  2. NATS_01:NATS基础介绍

    1.介绍 NATS(Message bus): 从CloudFoundry的总架构图看,位于各模块中心位置的是一个叫nats的组件.NATS是由CloudFoundry的架构师Derek开发的一个开源 ...

  3. spring IoC容器的实现。

    控制反转是spring的重要概念.而实现控制反转的IoC容器具体又是如何实现呢. IoC容器的目的是能够管理系统中各个对象之间的关系和依赖,为了实现这个功能,spring框架对Bean做了进一步抽象 ...

  4. 数据分析与展示---Matplotlib入门

    简介: 一:Matplotlib库的介绍 (一)简单使用 二:区域划分subplot 三:plot函数 四:pyplot的中文显示 (一)方法一:修改rcParams参数 (二)方法二(推荐),在有中 ...

  5. python---web微信开发

    一:轮询,长轮询,WebSocket了解 轮询: 在前端,设置时间内,一直向后端发送请求.例如:使用setInterval方法设置定时器,一秒向后端发送一次请求,去主动获取数据,进行更新由于前端一直请 ...

  6. 编译的java工程压缩上传到linux服务器上后,中文的类名显示乱码

    首先声明,类名是用中文命名的,这个别人写的,不允许修改. 本地用7zip软件压缩成zip包,传到服务器解压,发现中文的class文件名称是乱码. 解决办法: 方法一:使用jar命令打成jar包,传到服 ...

  7. 快速搭建Spring Boot项目

    Spring boot是Spring推出的一个轻量化web框架,主要解决了Spring对于小型项目饱受诟病的配置和开发速度问题. Spring Boot 包含的特性如下: 创建可以独立运行的 Spri ...

  8. React.js基础入门

    本文主要是针对React的一些demo教程.参考了菜鸟教程中的react教程,做了一些总结.Demo的下载链接是 https://github.com/RealAndMe/react-demo 下面要 ...

  9. 脑洞 博弈 E. Competitive Seagulls 2017 ACM Arabella Collegiate Programming Contest

    题目链接:http://codeforces.com/gym/101350/problem/E 题目大意:给你一个长度为n的方格,方格上面都被染色成了白色.每次染色都是选择白色的,假设目前选择的这块白 ...

  10. jmeter乱码问题

    JMeter 的版本由 2.13 升级到了 3.0 发现之前接口脚本 POST 请求主体中的中文无法正确显示,现象如下图所示: