• 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);
                }
            }

  • 相关阅读:
    Day1-CSS-下拉菜单
    scau 1138 代码等式
    SCAU-1076 K尾相等数
    勾股数专题-SCAU-1079 三角形-18203 神奇的勾股数(原创)
    SCAU-1144 数星星-HDU-1166-树状数组的应用
    NodeJs Fs模块
    Node核心模块
    flutter环境配置
    纯CSS制作图形效果
    CSS3选择器
  • 原文地址:https://www.cnblogs.com/bqh10086/p/winform_plugins.html
Copyright © 2020-2023  润新知