策略模式&反射
业务代码
class Operate { public string _firstKey; public string _secondKey; public string _extendKey; public string FirstKey { get { return _firstKey;} set{_firstKey=value;} } public string SecondKey { get { return _secondKey; } set { _secondKey = value; } } public string ExtendKey { get { return _extendKey; } set { _extendKey = value; } } public virtual string GetCheckValue(string _keyOne, string _keyTwo,string _keyThree) { string _checkValue = "0"; return _checkValue; } } class OperateOne : Operate { public override string GetCheckValue(string _keyOne, string _keyTwo, string _keyThree) { MethodsCheck c=new MethodsCheck(); string _checkValue = c.fileExistCheck(_keyOne,_keyTwo).ToString(); return _checkValue; } } class OperateTwo : Operate { public override string GetCheckValue(string _keyOne, string _keyTwo, string _keyThree) { MethodsCheck c = new MethodsCheck(); string _checkValue = c.RegMachineCheck(_keyOne, _keyTwo).ToString(); return _checkValue; } } class OperateThree : Operate { public override string GetCheckValue(string _keyOne, string _keyTwo, string _keyThree) { MethodsCheck c = new MethodsCheck(); string _checkValue = c.passwordValidate(_keyOne, _keyTwo).ToString(); return _checkValue; } } class OperateFour : Operate { public override string GetCheckValue(string _keyOne, string _keyTwo, string _keyThree) { MethodsCheck c = new MethodsCheck(); string _checkValue = c.GetDriverVersion(_keyOne, _keyTwo).ToString(); return _checkValue; } } class OperateFive : Operate { public override string GetCheckValue(string _keyOne, string _keyTwo, string _keyThree) { MethodsCheck c = new MethodsCheck(); string _checkValue = c.Getfilelength(_keyOne, _keyTwo).ToString(); return _checkValue; } } class OperateSix : Operate { public override string GetCheckValue(string _keyOne, string _keyTwo, string _keyThree) { MethodsCheck c = new MethodsCheck(); string _checkValue = c.GetNetCardName(_keyTwo).ToString(); return _checkValue; } } class OperateSeven : Operate { public override string GetCheckValue(string _keyOne, string _keyTwo, string _keyThree) { MethodsCheck c = new MethodsCheck(); string _checkValue = c.GetnetConfig(_keyOne, _keyTwo).ToString(); return _checkValue; } } class OperateEight : Operate { public override string GetCheckValue(string _keyOne, string _keyTwo, string _keyThree) { MethodsCheck c = new MethodsCheck(); string _checkValue = c.RegUserCheck(_keyOne, _keyTwo).ToString(); return _checkValue; } } class OperateNine : Operate { public override string GetCheckValue(string _keyOne, string _keyTwo, string _keyThree) { MethodsCheck c = new MethodsCheck(); string _checkValue = c.GetTxTstring(_keyOne, _keyTwo).ToString(); return _checkValue; } } class OperateTen : Operate { public override string GetCheckValue(string _keyOne, string _keyTwo, string _keyThree) { MethodsCheck c = new MethodsCheck(); string _checkValue = c.GetXMLString(_keyOne, _keyTwo).ToString(); return _checkValue; } } class OperateEleven : Operate { public override string GetCheckValue(string _keyOne, string _keyTwo, string _keyThree) { MethodsCheck c = new MethodsCheck(); string _checkValue = c.GetStringLinq(_keyOne,_keyTwo,_keyThree).ToString(); return _checkValue; } } class OperateContext { private Operate or; public void setBehavior(Operate Oper) { this.or = Oper; } public string GetValue(string _keyOne, string _keyTwo, string _keyThree) { return or.GetCheckValue(_keyOne, _keyTwo, _keyThree); } }
界面代码
string Xmlselect = ConfigurationManager.AppSettings["selectXml"].ToString(); DataSet ds = new DataSet(); ds.ReadXml(strPath + @"\" + Xmlselect); dataGridView1.DataSource = ds.Tables[0].DefaultView; for (int i = 0; i < ds.Tables["CheckTable"].Rows.Count; i++) { string MethodID = ds.Tables["CheckTable"].Rows[i]["MethodId"].ToString(); string CheckValue; string refValue = ds.Tables["CheckTable"].Rows[i]["RefValue"].ToString(); OperateContext oc = new OperateContext(); oc.setBehavior((Operate)Assembly.Load("SECC").CreateInstance(("SECC."+MethodID),false,BindingFlags.Default,null,null,null,null)); CheckValue = oc.GetValue(ds.Tables["CheckTable"].Rows[i]["FirKey"].ToString(), ds.Tables["CheckTable"].Rows[i]["SecKey"].ToString(), ds.Tables["CheckTable"].Rows[i]["CheckRemark"].ToString()); ds.Tables["CheckTable"].Rows[i]["CheckValue"] = CheckValue; if (refValue == CheckValue) { this.dataGridView1[0, i].Value = true; } else { this.dataGridView1[0, i].Value = false; this.dataGridView1[5, i].Style.ForeColor = Color.DarkRed; lg.log(ds.Tables["CheckTable"].Rows[i]["CheckName"].ToString() + " Check " + ds.Tables["CheckTable"].Rows[i]["CheckValue"].ToString(), strPath, "ErrorLog"); } }
XML文件
<?xml version="1.0" encoding="utf-8"?>
<Check>
<CheckTable>
<MethodID>OperateOne</MethodID>
<FirKey>C:\\</FirKey>
<SecKey>ec.exe</SecKey>
<Checkid>1</Checkid>
<CheckName>Install EC.exe</CheckName>
<RefValue>True</RefValue>
<CheckValue>0</CheckValue>
<CheckRemark></CheckRemark>
</CheckTable>
<CheckTable>
<MethodID>OperateOne</MethodID>
<FirKey>C:\\Windows\\Fonts\\</FirKey>
<SecKey>Vrinda.ttf</SecKey>
<Checkid>2</Checkid>
<CheckName>Install EC.exe</CheckName>
<RefValue>True</RefValue>
<CheckValue>0</CheckValue>
<CheckRemark></CheckRemark>
</CheckTable>
<CheckTable>
<MethodID>OperateOne</MethodID>
<FirKey>C:\\Windows\\System32\\</FirKey>
<SecKey>MSVCR71.DLL</SecKey>
<Checkid>3</Checkid>
<CheckName>Install EC.exe</CheckName>
<RefValue>True</RefValue>
<CheckValue>0</CheckValue>
<CheckRemark></CheckRemark>
</CheckTable>
<CheckTable>
<MethodID>OperateThree</MethodID>
<FirKey>Administrator</FirKey>
<SecKey>admin</SecKey>
<Checkid>3</Checkid>
<CheckName>AdminPassword</CheckName>
<RefValue>True</RefValue>
<CheckValue></CheckValue>
<CheckRemark></CheckRemark>
</CheckTable>
<CheckTable>
<MethodID>OperateThree</MethodID>
<FirKey>Prodiva</FirKey>
<SecKey>Pica$4$Pass</SecKey>
<Checkid>4</Checkid>
<CheckName>ProdivaPassword</CheckName>
<RefValue>True</RefValue>
<CheckValue></CheckValue>
<CheckRemark></CheckRemark>
</CheckTable>
<CheckTable>
<MethodID>OperateThree</MethodID>
<FirKey>Ethan</FirKey>
<SecKey>e</SecKey>
<Checkid>5</Checkid>
<CheckName>ProdivaPassword</CheckName>
<RefValue>True</RefValue>
<CheckValue></CheckValue>
<CheckRemark></CheckRemark>
</CheckTable>
<CheckTable>
<MethodID>OperateFour</MethodID>
<FirKey>Driver</FirKey>
<SecKey>MONITOR\DELF014</SecKey>
<Checkid>5</Checkid>
<CheckName>Driver</CheckName>
<RefValue>6.1.7600.16385</RefValue>
<CheckValue></CheckValue>
<CheckRemark></CheckRemark>
</CheckTable>
<CheckTable>
<MethodID>OperateFive</MethodID>
<FirKey>C:\Windows\</FirKey>
<SecKey>SCANACQ3090.ini</SecKey>
<Checkid>5</Checkid>
<CheckName>SCANACQ3090.ini</CheckName>
<RefValue>1074</RefValue>
<CheckValue></CheckValue>
<CheckRemark></CheckRemark>
</CheckTable>
<CheckTable>
<MethodID>OperateSix</MethodID>
<FirKey>C:\Windows\</FirKey>
<SecKey>Realtek PCIe GBE Family Controller</SecKey>
<Checkid>5</Checkid>
<CheckName>CardName</CheckName>
<RefValue>TestNet</RefValue>
<CheckValue></CheckValue>
<CheckRemark></CheckRemark>
</CheckTable>
<CheckTable>
<MethodID>OperateSeven</MethodID>
<FirKey>Realtek PCIe GBE Family Controller</FirKey>
<SecKey>*FlowControl</SecKey>
<Checkid>5</Checkid>
<CheckName>SCANACQ3090.ini</CheckName>
<RefValue>1</RefValue>
<CheckValue></CheckValue>
<CheckRemark></CheckRemark>
</CheckTable>
<CheckTable>
<MethodID>OperateSeven</MethodID>
<FirKey>Realtek PCIe GBE Family Controller</FirKey>
<SecKey>*JumboPacket</SecKey>
<Checkid>5</Checkid>
<CheckName>SCANACQ3090.ini</CheckName>
<RefValue>TestNet</RefValue>
<CheckValue></CheckValue>
<CheckRemark></CheckRemark>
</CheckTable>
<CheckTable>
<MethodID>OperateEleven</MethodID>
<FirKey>C:\DICOMServer.xml</FirKey>
<SecKey>Timemedical/MPPSDicom/MPPSDicomNodes</SecKey>
<Checkid>5</Checkid>
<CheckName>MPPSDicom-AETitle</CheckName>
<RefValue>LWPACS</RefValue>
<CheckValue></CheckValue>
<CheckRemark>AETitle</CheckRemark>
</CheckTable>
<CheckTable>
<MethodID>OperateEleven</MethodID>
<FirKey>C:\DICOMServer.xml</FirKey>
<SecKey>Timemedical/MPPSDicom/MPPSDicomNodes</SecKey>
<Checkid>5</Checkid>
<CheckName>MPPSDicom-IPAddress</CheckName>
<RefValue>192.168.1.253</RefValue>
<CheckValue></CheckValue>
<CheckRemark>IPAddress</CheckRemark>
</CheckTable>
<CheckTable>
<MethodID>OperateEleven</MethodID>
<FirKey>C:\DICOMServer.xml</FirKey>
<SecKey>Timemedical/MPPSDicom/MPPSDicomNodes</SecKey>
<Checkid>5</Checkid>
<CheckName>MPPSDicom-PortNo</CheckName>
<RefValue>4443</RefValue>
<CheckValue></CheckValue>
<CheckRemark>PortNo</CheckRemark>
</CheckTable>
<CheckTable>
<MethodID>OperateEleven</MethodID>
<FirKey>C:\DICOMServer.xml</FirKey>
<SecKey>Timemedical/MWLDicom/MWLDicomNote</SecKey>
<Checkid>5</Checkid>
<CheckName>MWL-AETitle</CheckName>
<RefValue>LWPACS</RefValue>
<CheckValue></CheckValue>
<CheckRemark>AETitle</CheckRemark>
</CheckTable>
<CheckTable>
<MethodID>OperateEleven</MethodID>
<FirKey>C:\DICOMServer.xml</FirKey>
<SecKey>Timemedical/MWLDicom/MWLDicomNote</SecKey>
<Checkid>5</Checkid>
<CheckName>MWL-IPAddress</CheckName>
<RefValue>192.168.1.253</RefValue>
<CheckValue></CheckValue>
<CheckRemark>IPAddress</CheckRemark>
</CheckTable>
<CheckTable>
<MethodID>OperateEleven</MethodID>
<FirKey>C:\DICOMServer.xml</FirKey>
<SecKey>Timemedical/MWLDicom/MWLDicomNote</SecKey>
<Checkid>5</Checkid>
<CheckName>MWL-PortNo</CheckName>
<RefValue>4443</RefValue>
<CheckValue></CheckValue>
<CheckRemark>PortNo</CheckRemark>
</CheckTable>
</Check>

浙公网安备 33010602011771号