前言
视频效果
核心代码
///
/// 获取签名
///
///
///
///
0-不排序 1-按名称ASCII排序
///
public string GetSign(T t, int otype=1)
{
string retstr = "";
//定义PropertyInfo的List
List
proplist = new List
();
//遍历泛型类的每个属性加入到List里面
Array.ForEach
(typeof(T).GetProperties(),
p => proplist.Add(p));
//根据参数进行排序 0-不排序 1-按名称ASCII码排序
if (otype == 1)
proplist = proplist.OrderBy(k => k.Name).ToList();
//遍历List泛型生成我们要签名的字符串
proplist.ForEach(p =>
{
retstr = retstr + p.Name + "=" + p.GetValue(t, null) + "&";
});
//把字符串最后一位截断
retstr = retstr.Substring(0, retstr.Length - 1);
//输出字符串
return retstr;
}
因为我们的类不同可以都传进来通用,所以我们用到了泛形,要读取每个类的属性和值我们又用到了PropertyInfo(这个的用法我们就不在这介绍了,大家可以搜一下),其实 PropertyInfo里的Name就是我们的类里属性的名称,GetValue就是我们获取的属性的值。
代码里的实现步骤:
定义生成的List
(new List
())
把传入进来的泛型类的属性生数组,然后再插入到我们的List里面(List.add())
根据输入的参数进行List属性名的排序(List.Orderby())
遍历我们的Listr属性和值进行字符串的拼接(List.Foreach())
输入字符串
代码编写
我们新建好一个C#的Winform程序,起名为ClassToSign,然后在里面新建了两个类,一个商品资料类,一个用户信息类
商品资料类
用户信息类
然后我们在Form窗体里面加入左边加入一个TextBox,起名为tbShow用于显示生成的结果,再设置商品资料和用户信息对应的输入文本框,加上两个生成的签名按钮
在Form1.cs里面先把我们转换的核心代码写进去
然后Button1事件写商品资料生成的方法
Button2写用户信息生成的方法
运行结果
DEMO下载地址
链接:https://pan.baidu.com/s/1UuPo7GV31ggKk6Ze4nHAWw 密码:wde8
-END-
长按下方二维码关注
领取专属 10元无门槛券
私享最新 技术干货