zoukankan      html  css  js  c++  java
  • Winfom 插件式(Plugins)/模块化开发框架-动态加载DLL窗体-Devexpress

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

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

    private void btLogin_Click(object sender, EventArgs e)
            {
                try
                {
                    string ip = NetworkUtil.GetLocalIP();
                    string macAddr = HardwareInfoHelper.GetMacAddress();
                    string loginName = this.cmbzhanhao.Text.Trim();
                    string identity = WHC.Security.BLL.BLLFactory<WHC.Security.BLL.User>.Instance.VerifyUser(loginName, this.tbPass.Text, Portal.gc.SystemType, ip, macAddr);
                    if (!string.IsNullOrEmpty(identity))
                    {
                        UserInfo info = WHC.Security.BLL.BLLFactory<WHC.Security.BLL.User>.Instance.GetUserByName(loginName);
                        if (info != null)
                        {
                            #region 获取用户的功能列表
    
                            List<FunctionInfo> list = WHC.Security.BLL.BLLFactory<WHC.Security.BLL.Function>.Instance.GetFunctionsByUser(info.ID, Portal.gc.SystemType);
                            if (list != null && list.Count > 0)
                            {
                                foreach (FunctionInfo functionInfo in list)
                                {
                                    if (!Portal.gc.FunctionDict.ContainsKey(functionInfo.ControlID))
                                    {
                                        Portal.gc.FunctionDict.Add(functionInfo.ControlID, functionInfo.ControlID);
                                    }
                                }
                            }
    
                            #endregion
    
                            bLogin = true;
                            Portal.gc.UserInfo = info;
                            Portal.gc.LoginUserInfo = ConvertToLoginUser(info);
    
                            this.DialogResult = DialogResult.OK;
                        }
                    }
                    else
                    {
                        MessageDxUtil.ShowTips("用户帐号密码不正确");
                        this.tbPass.Text = ""; //设置密码为空
                    }
                }
                catch (Exception err)
                {
                    MessageDxUtil.ShowError(err.Message);
                }
            }

  • 相关阅读:
    springbatch入门练习(第一篇)
    rabbitmq安装错误集
    动态代理和反射概念剖析
    RPC使用rabbitmq实现
    spring amqp初步了解
    aips初步设想
    静态工厂方法和实例工厂方法及普通的bean
    HDU4403(暴搜)
    CodeForces 446B
    HDU5505
  • 原文地址:https://www.cnblogs.com/bqh10086/p/winform_plugins.html
Copyright © 2011-2022 走看看