说明
在实际的系统当中,经常会有需要在我们的系统当中去调用第三方的系统,他们可能是EXE,浏览器,这时候我们可以通过参数化一些我们的系统变量来动态配置这种参数,从而动态的去调用,而不是去修改我们的代码。
1. 理解需求,需求说明
1.问题在于动态配置参数化,从而实现动态调用
2.如果你是刚开始搭建框架,最好是在框架层就设计这样一个参数变量类,去保存你系统的变量
3.在对接第三方系统中,往往没有固定规则和逻辑,根据对方提供的文档,一般是拼接Url,或者exe后面带参数,
4.除了基本参数。还可能动态获取当前时间,时间戳等等情况
基于需求,开始Code
先定义一个系统变量类,用于存储系统中的变量
/// <summary>
/// 定义一个系统变量类
/// </summary>
public static class SystemVariables
{
public static string PatNo { get; set; }//病人号
public static string HospNp { get; set; }//住院号
public static string WardCode { get; set; }//病区代码
public static string UserCode { get; set; }//登录账号代码
}
定义一个参数处理帮助类
//定义一个参数帮助类
public static class ParamsHepler
{
//系统变量字典
public static Dictionary<string, object> Params { get; set; }
/// <summary>
/// 动态处理参数化变量
/// </summary>
/// <param name="p_url"></param>
/// <returns></returns>
public static string UrlFormater(string p_url)
{
Params = new Dictionary<string, object>();
GetParams();
return Params.Aggregate(p_url, (key, value) => key.Replace(value.Key, value.Value.ToString()));
}
/// <summary>
/// 获取系统内置变量,并添加到字典当前
/// </summary>
private static void GetParams()
{
Params.Add("@PatNo", SystemVariables.PatNo);
Params.Add("@HospNo", SystemVariables.HospNp);
Params.Add("@WardCode", SystemVariables.WardCode);
Params.Add("@UserCode", SystemVariables.UserCode);
//可以自定义一些其他变量等等
Params.Add("@GetDate", DateTime.Now.ToString());
}
}
调用方法 ,处理参数化Url
例如:www.baidu.com?Param1=@PatNo&HospNo=@HospNo&Ward=@WardCode
调用完成!
private void button1_Click(object sender, EventArgs e)
{
SystemVariables.PatNo= textBox1.Text;
SystemVariables.HospNp = textBox2.Text;
SystemVariables.WardCode = textBox3.Text;
SystemVariables.UserCode = textBox4.Text;
string paramulr = ParamsHepler.UrlFormater(textBox5.Text);
MessageBox.Show(paramulr);
}
创作不易,一键三连,谢谢