zoukankan      html  css  js  c++  java
  • 策略模式&反射

    业务代码

    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>MONITORDELF014</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>
    

      

  • 相关阅读:
    静水流深,沧笙踏歌
    iOS 进阶 第二十二天(0603)
    iOS 进阶 第二十一天(0531)
    iOS 进阶 第二十天(0520)
    iOS 进阶 第十九天(0423)
    iOS 进阶 第十八天(0423)
    iOS 进阶 第十七天(0420)
    iOS 进阶 第十六天(0419)
    iOS 进阶 第十五天(0417)
    iOS 进阶 第十四天(0416)
  • 原文地址:https://www.cnblogs.com/EthanSun/p/3145587.html
Copyright © 2011-2022 走看看