![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
.NET
HueiFeng
格局决定梦想。
展开
-
MSIL入门(二)通过对象看IL
前言上一篇文章主要介绍了IL的概念以及基础的示例代码,在这一篇文章中我们将通过对象调用看IL。创建对象与调用方法class Program{ static void Main(string[] args) { var obj = new MyClass(); Console.WriteLine(obj.Say()); }}class MyClass{ private const string Str = "Hello";原创 2020-08-17 11:55:35 · 155 阅读 · 0 评论 -
MSIL入门(一)C#代码与IL代码对比
基础概念Microsoft中间语言(MSIL),也成为通用中间语言(CIL),是一组与平台无关的指令,由特定于语言的编译器从源代码生成。MSIL是独立于平台的,因此,他可以在任何公共语言基础架构支持特定的环境上执行。通过JIT编译器将MSIL转换为特定计算机环境的特定机器代码。这是在执行MSIL之前完成的,同样,MSIL在需求的基础上转换为机器代码,既JIT编译器根据需要而不是整个MSIL进行编译。公共语言运行时(CLR)中的执行过程:执行过程包括创建MSIL以及通过JIT编译器将MSIL转换为机器代原创 2020-07-07 20:41:54 · 1020 阅读 · 0 评论 -
ASP.NET 开源导入导出库Magicodes.IE 多Sheet导入教程
多Sheet导入教程说明本教程主要说明如何使用Magicodes.IE.Excel完成多个Sheet数据的Excel导入。要点多个相同格式的Sheet数据导入多个不同格式的Sheet数据导入主要步骤1. 多个相同格式的Sheet数据导入1.1 创建导入Sheet的Dto主要代码如下所示:学生数据Dto /// <summary> /// 导入学生数据Dto /// IsLabelingError:是否标注数据错误 /// </summary>原创 2020-07-07 20:41:23 · 358 阅读 · 0 评论 -
Magicodes.IE在.NET Core中通过请求头导出多种格式文件
前言在2.2里程碑中我们增加了一些新的功能,正如标题所写通过请求头进行导出我们不同格式的文件.下面我们来看一下如何使用.通过这种方式无论是对我们的数据多用途,还是说对我们的数据校验都做到了轻松易配。同时我们也将在本周发布2.3版本,另外3.0版本我们将进行一次大的性能提升。3.0版本我们将对Razor引擎以及导出引擎进行更换,包括对所有代码的重构,这是值得期待的。上周我们发布了2.2.5版本更新如下:【Nuget】版本更新到2.2.5【Excel导出】增加分栏、分sheet、追加rows导原创 2020-07-07 20:40:48 · 12884 阅读 · 0 评论 -
在 Visual Studio 中查看反汇编代码
在源代码中设置断点,然后进行点击调试若要启用反汇编窗口,请在工具>选项(或工具> 选项>调试下,选择启用地址级调试。若要在调试期间打开反汇编窗口,请选择窗口>反汇编或按 Alt+8 。除汇编指令外,反汇编窗口还可显示下列可选信息:每条指令所在的内存地址 对于本机应用程序,它是实际内存地址。 对于 Visual Basic 或 C#,它是距离函数开头的偏移量。程序集代码派生于的源代码。代码字节,即实际计算机或 MSIL 指令的字节表示形式。内存地址的符号名。对应于原创 2020-07-07 20:40:18 · 13636 阅读 · 0 评论 -
修改Nuget包默认存放路径
默认情况下所有的Nuget包都会下载到C盘,目前我这边有几十个G的大小,这导致我C盘的容量越来越小…我们可以在Nuget.config中修改package存放路径,C:\Users\{UserName}\AppData\Roaming\NuGet默认如下所示<?xml version="1.0" encoding="utf-8"?><configuration> <packageSources> <add key="nuget.org" valu原创 2020-06-04 11:44:31 · 3167 阅读 · 0 评论 -
.NET ValueTuple使用WhenAll获取多个任务结果
在.NET中,我们可以通过Task.WhenAll用来等待多个任务。任务完成之后,我们可以使用await等待他们来获取结果。Task<int> task1 = Task.Run(() => 1);Task<string> task2 = Task.Run(() => "hello");await Task.WhenAll(task1, task2);var task1Result = task1.Result; // or await task1var tas原创 2020-05-26 21:16:38 · 670 阅读 · 0 评论 -
ASP.NET Core中处理中止的请求
当用户向应用程序发出请求时,服务器将解析该请求,生成响应,然后将结果发送给客户端。用户可能会在服务器处理请求的时候中止请求。就比如说用户跳转到另一个页面中获取说关闭页面。在这种情况下,我们希望停止所有正在进行的工作,以浪费不必要的资源。例如我们可能要取消SQL请求、http调用请求、CPU密集型操作等。ASP.NET Core提供了HTTPContext.RequestAborted检测客户端何时断开连接的属性,我们可以通过IsCancellationRequested以了解客户端是否中止连接。[Api原创 2020-05-26 20:51:32 · 638 阅读 · 0 评论 -
C#设计模式之订阅发布模式
什么是Pub-Sub发布订阅是一种设计模式,它允许应用程序组件之间进行松散耦合。其实订阅发布设计中主要是发布者生成事件通道,用于在不了解任何订阅者存在的情况下通知订阅者。当然委托EventHandlers和Event关键字在此事件处理机制中担任着重要的角色。下面我们来看看如何使用它们。Pub和Sub的使用首先我们看一个简单地订阅发布模式.定义一个Action委托,无返回值.namespace PubSubPattern{ public class Pub {原创 2020-05-21 21:13:31 · 1999 阅读 · 1 评论 -
ASP.NET 开源导入导出库Magicodes.IE 完成Csv导入导出
Magicodes.IE Csv导入导出说明本章主要说明如何使用Magicodes.IE.Csv进行Csv导入导出.主要步骤1.安装包Magicodes.IE.CsvInstall-Package Magicodes.IE.Csv2.使用Magicodes.IE.Csv导出Csv通过如下代码片段我们将导出的内容通过相应的特性做出相应的处理.ExporterHeaderAttributeDisplayName: 显示名称Format: 格式化IsIgnore: 是否忽略 p原创 2020-05-14 09:58:05 · 284 阅读 · 0 评论 -
ASP.NET Core依赖注入(DI)
ASP.NET Core允许我们指定注册服务的生存期.服务实例将根据指定的生存时间自动处理.因此,我们无需担心清理此依赖关系,他将由ASP.NET Core框架处理.有如下三种类型的生命周期.Microsoft.Extensions.DependencyInjection.ServiceLifetime枚举值public enum ServiceLifetime{ Singleton, Scoped, Transient}Singleton应用程序将在该应用程序生命周期内创建并共享原创 2020-05-12 09:06:05 · 231 阅读 · 0 评论 -
.NET IoC模式依赖反转(DIP)、控制反转(Ioc)、依赖注入(DI)
依赖倒置原则(DIP)依赖倒置(Dependency Inversion Principle,缩写DIP)是面向对象六大基本原则之一。他是指一种特定的的解耦形式,使得高层次的模块不依赖低层次的模块的实现细节,依赖关系被颠倒(反转),从而使得低层次模块依赖于高层次模块的需求抽象.该原则规定:高层次的模块不应该依赖低层次模块,二者都应该依赖其抽象接口.抽象接口不应该依赖于具体实现,而具体实现则应该依赖于抽象接口.通过如下一个简单的示例,我们来看一下,我们通过一个简单地下单流程向我们的用户发送相关的原创 2020-05-12 09:05:27 · 256 阅读 · 0 评论 -
HttpClient来自官方的JSON扩展方法
System.Net.Http.JsonJson的序列化和反序列化是我们日常常见的操作,通过System.Net.Http.Json我们可以用少量的代码实现上述操作.正如在github设计文档中所描述Serializing and deserializing JSON payloads from the network is a verycommon operation for client...原创 2020-04-13 09:59:14 · 528 阅读 · 0 评论