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 也会跟着改变,如图:

此示例适用在数据签名

 

posted @ 2021-05-15 12:06  microsoft-zhcn  阅读(193)  评论(0编辑  收藏  举报