C# 数据签名 与 反序列化 WebApi
示例:反序列化 WebApi
public class ReturnInfo{}
public class ReturnInfo<T> : ReturnInfo{}
示例,适用于反序列号 WebApi 返回的字符串,T 可以为任意对象
public WindowLogin() { InitializeComponent(); Loaded += (s, e) => { var obj = new { code = 0, data = new { id = 0, sign = "MD5" } }; string jsonString = JsonConvert.SerializeObject(obj); ReturnInfo<User> info = JsonConvert.DeserializeObject<ReturnInfo<User>>(jsonString); string sign = info.data.sign; }; } } public class User { public int id { set; get; } public string sign { set; get; } } public class ReturnInfo { public int code { set; get; } public ReturnInfo(int code) { this.code = code; } } public class ReturnInfo<T> : ReturnInfo { public ReturnInfo(int code) : base(code) { } public T data { get; set; } }
示例结果如图:
2、var 与 object
C# 的关键字 var 与 JavaScript 的 var 相似,属于隐式类型;
使用var定义变量时有以下四个特点:
1) 必须在定义时初始化。
2) 一但初始化完成,就不能再给变量赋与初始化值类型不同的值了。
3) var要求是局部变量。
使用var定义变量和object不同,如:
定义一个类
public class User { public int id { set; get; } public string sign { set; get; } }
var user = new User();
此时 user 为 User 类型的实例对象,则 user. 出现 id 和 name 属性,如图
object user = new User();
此时 user 为 User 类型 隐式转为 Object 对象类型,则 user. 无效
但是此时的 obj 实例对象可以强制转换为 User类型,被赋值后,obj 也会跟着改变,如图:
此示例适用在数据签名