业务代码

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. image和TFRecord互相转换

    关说不练假把式.手上正好有车牌字符的数据集,想把他们写成TFRecord格式,然后读进来,构建一个简单的cnn训练看看.然后发现准确率只有0.0x.随机猜也比这要好点吧.只能一步步检查整个过程.暂时想 ...

  2. JAVA编程不得不看的几本经典书籍

    为了帮助对java编程感兴趣的同学更好.更快的提高编程技术,武汉北大青鸟光谷校区专业老师在此推荐几本学习编程非常有用的书籍,以供大家参考. 入门类 1.<java从入门到精通>(第3版) ...

  3. formatDate() 格式化日期

    function datefmt(milSec, format) { var oldTime = Number(milSec); //得到毫秒数 // 日期格式转换 var t = new Date( ...

  4. 在springBoot的控制台打印sql语句

    在springBoot+Mybatis日志显示SQL的执行情况的最简单方法就是在properties新增: properties形式 logging.level.com.eth.wallet.mapp ...

  5. mysql崩溃恢复

    mysql进程崩溃. 杀掉所有mysql进程,在my.cnf文件中写入innodb_recover_force=1,强制并忽略任何错误启动数据库. 用mysqldump导出所有数据,在新机器上部署好m ...

  6. ORM之单表增删改查

    ORM之单表增删改查 在函数前,先导入要操作的数据库表模块,model from model所在的路径文件夹 import model   在views文件中,加的路径: #就一个app01功能的文件 ...

  7. POJ 1995 (快速幂) 求(A1B1+A2B2+ ... +AHBH)mod M

    Description People are different. Some secretly read magazines full of interesting girls' pictures, ...

  8. poj 2186 强连通分量

    poj 2186 强连通分量 传送门 Popular Cows Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 33414 Acc ...

  9. dsu+树链剖分+树分治

    dsu,对于无修改子树信息查询,并且操作支持undo的问题 暴力dfs,对于每个节点,对所有轻儿子dfs下去,然后再消除轻儿子的影响 dfs重儿子,然后dfs暴力恢复轻儿子们的影响,再把当前节点影响算 ...

  10. Python条件判断(if)

    Python条件判断(if) 一.基本介绍 1.Python 编程中 if 语句用于控制程序的执行,基本形式为: if 判断条件: 执行语句…… 需要注意的是,Python没有像其他大多数语言一样使用 ...