业务代码

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 = "";
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[].DefaultView;
for (int i = ; 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[, i].Value = true;
}
else
{
this.dataGridView1[, i].Value = false;
this.dataGridView1[, 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>

  

策略模式&反射的更多相关文章

  1. 过多if - else 的问题, 以及策略模式 + 反射解决方法

    策略模式解决if - else 的代码 业务场景: 外包企业的审批人需要审批打卡的场景: 审批人分为多种不同的级别,多种级别中具有方式相同但是内容不同的操作:审批. 原来场景: 有前端传来审批人参数, ...

  2. 使用反射+策略模式代替项目中大量的switch case判断

    我这里的业务场景是根据消息类型将离线消息存入mongoDB不同的collection中.其中就涉及到大量的分支判断,为了增强代码的可读性和可维护性,对之前的代码进行了重构. 先对比一下使用反射+策略模 ...

  3. ASP.NET MVC 学习笔记-2.Razor语法 ASP.NET MVC 学习笔记-1.ASP.NET MVC 基础 反射的具体应用 策略模式的具体应用 责任链模式的具体应用 ServiceStack.Redis订阅发布服务的调用 C#读取XML文件的基类实现

    ASP.NET MVC 学习笔记-2.Razor语法   1.         表达式 表达式必须跟在“@”符号之后, 2.         代码块 代码块必须位于“@{}”中,并且每行代码必须以“: ...

  4. PHP 策略模式

    策略模式:定义一系列的算法,把每一个算法封装起来, 并且使它们可相互替换.本模式使得算法可独立于使用它的客户而变化.策略模式把对象本身和运算规则区分开来,其功能非常强大,因为这个设计模式本身的核心思想 ...

  5. 【2016-10-14】【坚持学习】【Day5】【策略模式】

    今天学了策略模式 例子 一个售票系统,针对不同的用户使用不用的计价方式, 环境类:一个业务场景(电影票累,) 抽象类:计价算法 具体实现类:5折算法,满100减20算法,..... 抽象策略类 abs ...

  6. 编写自定义的JDBC框架与策略模式

    本篇根据上一篇利用数据库的几种元数据来仿造Apache公司的开源DbUtils工具类集合来编写自己的JDBC框架.也就是说在本篇中很大程度上的代码都和DbUtils中相似,学完本篇后即更容易了解DbU ...

  7. 策略模式Strategy——坐什么车回家?

    1.存在的问题和模型 :2014年6月       学校:廊坊师范        家:石家庄       人物:学生 又快到期末考试了.回家的节奏也奔上日程,无聊之余就想想这次回家的事儿. 对我来说回 ...

  8. CSharp设计模式读书笔记(22):策略模式(学习难度:★☆☆☆☆,使用频率:★★★★☆)

    策略模式(Strategy Pattern):定义一系列算法类,将每一个算法封装起来,并让它们可以相互替换,策略模式让算法独立于使用它的客户而变化,也称为政策模式(Policy). 模式角色与结构: ...

  9. 设计模式-策略模式Strategy以及消灭if else

    概述 如果在开发过程中,出现大量的if else或者switch case 语句,如果这些语句块中的代码并不是包含业务逻辑,只是单纯的分流方法,那么,每一个语句块中都是一个算法或者叫策略. 背景 比如 ...

随机推荐

  1. Linux运维到底是做什么的?在开始学习之前,你必须了解这些!

    首先祝贺你选择学习Linux,你可能即将踏上Linux的工作之旅,出发之前,让我带你来看一看关于Linux和Linux运维的一切. Linux因其高效率.易于裁剪.应用广等优势,成为了当今中高端服务器 ...

  2. 诊断:RHEL7安装11.2RAC时root.sh错误ohasd failed to start

    RHEL 7.5中安装11gRAC时,在grid infrastructure的root.sh执行时,报错: # /oracle/product/11g/grid/root.sh ... Adding ...

  3. margin负值应用

    我理解的最关键的一点是: 在文档流中,只能是后面的流向前面的,即文档流只能向左或向上流动,不能向下或向右移动.第二个元素的基准线是第一个元素的右边界,第三个元素的基准线是第一.二个元素排好后最右边的边 ...

  4. swiper 3D 覆盖流的使用方法

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <meta name ...

  5. php代码中注释的含义

    最近在梳理和优化手上的项目代码,这个项目已经走过好几任了,每一任的开发人员多多少少都有一些差异和各自的习惯,所以代码逻辑和写法上都有点[乱]. 在代码中,注释是一个非常重要的信息,更何况是接手其他人的 ...

  6. 零基础入门学习Python(35)--图形用户界面入门:EasyGui

    知识点 EasyGui学习文档[超详细中文版] 1. 建议不要在IDLE上运行EasyGui EasyGui是运行在TKinter上并拥有自身的事件循环,而IDLE也是Tkinter写的一个应用程序并 ...

  7. Far Relative’s Problem (贪心 计算来的最多客人)

    Description Famil Door wants to celebrate his birthday with his friends from Far Far Away. He has n  ...

  8. 我们参与投资36Kr股权众筹项目“易途8”的决策过程

     背景   中文接机.中文送机.中文包车. 当地玩乐   最大的竞争对手:皇包车,15年9月A轮   其它对手:唐人接等,订单量无法和 皇包车.易途8比.    看好理由 1.旅游行业和境外自由行,是 ...

  9. 九度oj 题目1438:最小公倍数

    题目1438:最小公倍数 时间限制:1 秒 内存限制:128 兆 特殊判题:否 提交:2451 解决:2057 题目描述: 给定两个正整数,计算这两个数的最小公倍数. 输入: 输入包含多组测试数据,每 ...

  10. [luoguP3402] 最长公共子序列(DP + 离散化 + 树状数组)

    传送门 比 P1439 排列LCS问题,难那么一点点,只不过有的元素不是两个串都有,还有数据范围变大,树状数组得打离散化. 不过如果用栈+二分的话还是一样的. ——代码 #include <cs ...