.Net基础系列(六):三个有趣有用的知识点

77 阅读1分钟

1. 扩展静态类和方法

对于HttpContext对象,如果想要在它的基础上扩展新的方法,该怎样实现呢?

创建一个静态类HttpContextExtensions.cs,在静态类里面实现一个静态方法GetValue,它的第一个参数是HttpContext对象,然后可以在方法内使用HttpContext对象context

// HttpContextExtensions.cs
public static class HttpContextExtensions
{
    public static string GetValue(this HttpContext context, string key)
    {
        return context.Request.Cookies.ContainsKey(key)
            ? context.Request.Cookies[key]
            : null;
    }
}

然后在其他使用HttpContext对象的地方,可以使用自定义的方法,如下:

// 使用处
context.GetValue("test")

2. 数据映射时的名称转化

有一个请求数据的接口,获取回来的JSON数据属性名与项目中定义的有出入,此时,又不想更改项目中定义的名称,如何解决这个问题?

此时此刻JsonPropertyName就派上了用场。可以用来做名称匹配,如以下代码所示,会把来自JSON中的access_tokenAccessToken字符串来接受。

 [JsonPropertyName("access_token")]
 public string AccessToken { get; set; }

// access_token --> AccessToken

3. AllowAnonymous

项目的接口访问是需要token认证的,如果此时某些接口想要跳过认证的话,如何实现?

可以在controller层的接口上加上[AllowAnonymous],那么该接口就可以跳过认证步骤。

[AllowAnonymous]
[HttpGet("api")]
public async Task<IActionResult> Api()
{
    return Ok();
}