⭐️ 如果你喜欢 Furion ,可以在 Gitee 中给个star ⭐️
Skip to main content

4. 粘土对象

dotNET China

dotNET China

为中国 .NET 开发者提供优质的资讯和技术分享。

对象转 IDictionary<string, object>#

有些时候我们需要将一个对象或匿名类转换成字典类型,就需要用到该功能。

var dic = new {
Id = 1,
Name = "Furion"
}.ToDictionary();
foreach (var key in dic)
{
Console.WriteLine(dic[key]);
}

对象转 IDictionary<string, Tuple<Type, object>>#

var dic = new {
Id = 1,
Name = "Furion"
}.ToDictionaryWithType();
foreach (var key in dic)
{
Console.WriteLine(dic[key].Item1);
Console.WriteLine(dic[key].Item2);
}

对象转 ExpandoObject 类型#

dynamic expando = new {
Id = 1,
Name = "百小僧",
Project = new {
Name = "Furion"
}
}.ToExpandoObject();
// 动态添加属性
expando.NickName = "MonkSoul";
expando.Project.Id = 1;
Console.WriteLine(expando.Name); // => 百小僧
Console.WriteLine(expando.Project.NickName); // => MonkSoul

3. 文件上传下载

dotNET China

dotNET China

为中国 .NET 开发者提供优质的资讯和技术分享。

文件下载#

[HttpGet, NonUnify]
public IActionResult FileDownload(string path, string fileName)
{
string filePath = Path.GetFullPath("~/temp/").Replace("~\\", "") + path;
return new FileStreamResult(new FileStream(filePath, FileMode.Open), "application/octet-stream") { FileDownloadName = fileName };
}

2. HttpContext 应用

dotNET China

dotNET China

为中国 .NET 开发者提供优质的资讯和技术分享。

HttpContext 重大调整#

ASP.NET 的时代,我们通常通过 HttpContext 全局静态类获取请求上下文,但在 ASP.NET Core 中,HttpContext 是一个非静态的抽象类,无法手动创建,也无法通过静态获取。

虽然在 ASP.NET Core 中无法直接获取 HttpContext 对象。但是微软也提供了注入 IHttpContextAccessor 方式获取。

HttpContext 多种获取方式#