C#根据类生成签名字符串

前言

视频效果

核心代码

///

/// 获取签名

///

///

///

///

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-

长按下方二维码关注

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180531G0DRVT00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券