<?xml version="1.0" encoding="utf-8" ?> <forms-config> <action-mappings> <action name="writeMessage" type="JJSoft.TestDLL.TestClass" dllName="JJSoft.TestDLL.dll"> <forward name="success" path="" /> <forward name="faild" path="" /> </action> </action-mappings> </forms-config>
配置文件
using System.Text; using System.Xml; using System.Reflection; using System.Collections; using System.Windows.Forms; using JJSoft.FrameWork.Controls; namespace JJSoft.FrameWork.FormBase { public class FormBase : System.Windows.Forms.Form { #region const protected const string FORMS_CONFIG_FILENAME = @"forms-config.xml"; protected const string ATTRIBUTE_DLLNAME = "dllName"; protected const string ATTRIBUTE_TYPE = "type"; protected const string ATTRIBUTE_NAME = "name"; #endregion public Hashtable doPropertyCollect(List<Panel> pnlList) { Hashtable htProperty = new Hashtable(); if (pnlList !=null) { foreach (Panel pnl in pnlList) { htProperty = doPropertyCollect(pnl); } } return htProperty; } public Hashtable doPropertyCollect(Panel pnl) { Hashtable htProperty = new Hashtable(); foreach (Control ctr in pnl.Controls) { Type type = ctr.GetType(); PropertyInfo pptInfo = type.GetProperty("Property"); if (pptInfo != null) { htProperty.Add(pptInfo.GetValue(ctr,null), ctr.Text); } } return htProperty; } public void doAction(string strActionName,Hashtable propertys) { try { XmlElement actionElement; string strDllName; string strType; string strStartPath = System.Windows.Forms.Application.StartupPath + @"/"; actionElement = findElement(strActionName); strDllName = strStartPath + actionElement.GetAttribute(ATTRIBUTE_DLLNAME); strType = actionElement.GetAttribute(ATTRIBUTE_TYPE); Assembly asm = Assembly.LoadFile(strDllName); Type type = asm.GetType(strType); Object obj = asm.CreateInstance(strType); foreach (object objKey in propertys.Keys) { object propertyValue; propertyValue = propertys[objKey]; PropertyInfo pptInfo = type.GetProperty(objKey.ToString()); if (pptInfo != null) { pptInfo.SetValue(obj, propertyValue, null); } } MethodInfo mthInfo = type.GetMethod(strActionName); mthInfo.Invoke(obj, null); } catch (Exception ex) { throw ex; } } public XmlElement findElement(string strNodeName) { XmlElement actionElement; actionElement = null; XmlDocument xmlFormsConfig; xmlFormsConfig = new XmlDocument(); xmlFormsConfig.Load(FORMS_CONFIG_FILENAME); XmlElement root = xmlFormsConfig.DocumentElement; foreach (XmlElement xmlActionElement in root.FirstChild.ChildNodes) { if (strNodeName.Equals(xmlActionElement.GetAttribute(ATTRIBUTE_NAME))) { actionElement = xmlActionElement; } } return actionElement; } } }
基礎類代碼
前端面試題 - null是原始類型,但爲什麼typeof null的結果是object? 造成這個結果的原因是null的內存地址是以000開頭,而js會將000開頭的內存地址視爲object。 通過isNull()來判斷一個值是不是null
Ai technology 前言 AppBuilder上線了低代碼製作組件功能,可以通過工作流的方式構建自定義組件,完成簡單Agent無法完成的複雜功能,使得生成的文本更加定製化,
最近在刷一些問題的時候看到有下面一個問題 上面問的是當輸入的字符串爲什麼的時候返回 True 總結 在做題目的時候,第一次還做錯了。 這是因爲解答這個題目的時間只有 3 分鐘,沒有自己看題目 後來拿着程序跑了下。 p
本文分享自華爲雲社區《【MySQL技術專欄】MySQL8.0直方圖介紹》,作者:GaussDB 數據庫。 背景 數據庫查詢優化器負責將SQL查詢轉換爲儘可能高效的執行計劃,但因爲數據環境不斷變化導致優化器對查詢數據瞭解的不夠充足,可能無法
每篇一句 大魔王張怡寧:女兒,這堆金牌你拿去玩吧,但我的銀牌不能給你玩。你要想玩銀牌就去找你王浩叔叔吧,他那銀牌多 前言 爲了講述好Spring MVC最爲複雜的數據綁定這塊,我前面可謂是做足了功課,對此部分知識此處給小夥伴留一個學
作者:vivo 互聯網數據庫團隊- Qiu Xinbo 本文主要通過圖示介紹了用主鍵進行分片查詢的過程,介紹了主鍵分頁查詢存在SQL性能問題,如何去創建高效的索引去優化主鍵分頁查詢的SQL性能問題 對於數據分佈不均
JSON簡介: JSON(Java Script Object Notation)是一種輕量級的數據交換格式,通常用於在不同系統之間傳輸數據。它基於 JavaScript 對象語法,但已成爲一種獨立於語言的格式。JSON 數據以鍵值對的形式
一、簡單介紹: CaffeineCache和Guava的Cache是應用廣泛的本地緩存。 在開發中,爲了達到降低依賴、提高訪問速度的目的。會使用它存儲一些維表接口的返回值和數據庫查詢結果,在有些場景下也會在分佈式緩存上再加上一層本地緩存,
作者:vivo 互聯網大前端團隊 - Ma Lian 本文主要描述了FileProvider,startAnyWhere實現,Parcel不對稱漏洞以及這三者結合產生的漏洞利用實戰,另外闡述了漏洞利用的影響和修復預防措施,這個漏洞波及了
本文分享自華爲雲社區《GaussDB SQL基本語法示例-CASE表達式》,作者:Gauss松鼠會小助手2。 一、前言 SQL是用於訪問和處理數據庫的標準計算機語言。GaussDB支持SQL標準(默認支持SQL2、SQL3和SQL4的主要
Impala目前支持Hadoop中幾種常見的文件格式 Parquet 、 ORC 、 Text 、 Avro 、 RCFile 和 SequenceFile 。下面簡要說明各種格式的使用、限制和一些注意事項。 不同的文件格式有着不同的適用場
本文分享自華爲雲社區《GaussDB SQL基礎語法示例-BOOLEAN表達式》,作者:Gauss松鼠會小助手2。 一、前言 SQL是用於訪問和處理數據庫的標準計算機語言。GaussDB支持的SQL標準(默認支持SQL2、SQL3和SQL
Map是用於保存具有映射關係的數據集合,它具有雙列存儲的特點,即一次必須添加兩個元素,即一組鍵值對<Key,Value>,其中Key的值不可重複(當Key的值重複的時候,後面插入的對象會將之前插入的具有相同的Key值的對象覆蓋掉),Valu
前端面試題 - vue的雙向綁定原理是什麼? vue2的雙向數據綁定是通過數據劫持結合發佈者訂閱者模式的方式來實現。 通過object.defineProperty來劫持各個屬性的setter,getter,在數據變化時發佈消息給訂閱者,
原方法 /** * 動態更新form * @param form */ updateForm(form) { this.form.manholeId = form.manholeId; this.form