C#
文章平均质量分 54
Upgrader
人生要有取舍 想要成功就要付出代价
展开
-
在 .NET Core 中添加 OpenAPI 服务引用
文章目录前言:一、将 Swagger 引入 WebAPI 项目二、添加 OpenAPI 服务引用前言:本文使用 .NET Core SDK 3.1 的版本。在我们使用微服务的时候,各个微服务之间会经常调用接口,但是手动写Http请求的代码非常繁琐,在 Visual Studio 2019 的 .NET Core 项目中提供了添加连接的服务的功能,使得我们的工作变得简单容易。一、将 Swagger 引入 WebAPI 项目将 Swagger 引入 ASP.NET Core 项目可以使用Swashb原创 2021-02-28 15:42:55 · 3806 阅读 · 0 评论 -
在 ASP.NET Core 中使用中间件处理异常
目录前言:一、开发人员异常页二、异常处理程序页三、异常处理程序 lambda四、异常过滤器 IExceptionFilter1) 直接实现 IExceptionFilter 的方式2) 继承 ExceptionFilterAttribute 的方式参考文档前言:本文使用 .NET Core SDK 3.1 的版本,介绍了处理 ASP.NET Core Web 应用中常见异常的一些方法。本文 Demo 中贯穿全文的代码如下:#region Enums public enum ResultSta原创 2021-02-24 05:51:05 · 587 阅读 · 0 评论 -
C# 中 async/await 解析
目录前言:一、使用 async 和 await二、用代码实现 async/await前言:已经有很多文章讲解 async/await 了,此文仅给自己理解用。此文章以下代码将重复使用,贯穿全文 public static string GetThreadId() { return Thread.CurrentThread.ManagedThreadId.ToString("000"); } public static void TaskRun(原创 2020-08-09 17:03:54 · 425 阅读 · 3 评论 -
C# 中的多线程实现方式
目录前言:一、使用委托开启子线程二、使用Thread开启子线程前言:线程 被定义为程序的执行路径。每个线程都定义了一个独特的控制流。如果您的应用程序涉及到复杂的和耗时的操作,那么设置不同的线程执行路径往往是有益的,每个线程执行特定的工作。下面简单的 DoSomething 方法将贯穿全文。 private string DoSomething(string name, int millisecondsTimeout) { Thread.Sleep(millisecond原创 2020-08-04 21:02:33 · 6903 阅读 · 4 评论 -
C# 中的装饰器模式示例
装饰器模式属于结构型模式,它是作为现有的类的一个包装。允许向一个现有的对象添加新的功能,同时又不改变其结构。这种模式创建了一个装饰类,用来包装原有的类,并在保持类方法签名完整性的前提下,提供了额外的功能。 public abstract class AbstractMotion { public abstract void Start(); } public class BaseMotion : AbstractMotion {原创 2020-07-23 22:03:23 · 680 阅读 · 0 评论 -
C# 中的原型模式示例
原型模式,把对象从内存层面复制,然后返回。不经过类的构造函数,但是是一个全新的对象。 public class Prototype { public Prototype() { Console.WriteLine("构造。。。。"); } private static readonly Prototype prototype = new Prototype(); public sta原创 2020-07-21 20:52:22 · 200 阅读 · 0 评论 -
C# 中的单例模式示例
目录前言:一、线程不安全的单例二、使用锁实现单例三、使用静态构造函数实现单例四、使用静态字段实现单例五、使用Lazy实现单例前言:一、线程不安全的单例懒汉模式,线程不安全,不建议使用。 public class Singleton { private Singleton() { } private static Singleton singleton = null; public static Singleton CreateInst原创 2020-07-20 22:23:14 · 526 阅读 · 0 评论 -
C# 中的表达式树
目录前言:一、使用lambda声明表达式树二、表达式树的分解三、表达式树实现实体映射四、表达式树的访问或重写五、表达式树的Sql拼装前言:我们在工作当中,经常会接触到与表达式树相关的内容,比如 EF,EF Core中的 lambda,就是表达式树。表达式树是一种数据结构,一个能拼装能解析的数据结构。一、使用lambda声明表达式树以下代码演示声明表达式树和表达式树转换为委托。 // lambda表达式 声明表达式目录树,是一个数据结构 (快捷方式) Expression<Fu原创 2020-07-19 20:05:36 · 1203 阅读 · 0 评论 -
C# 优化的图片压缩
用了网上百度的图片压缩以后发现并不合适,压缩参数 new EncoderParameter(Encoder encoder, long value) 的参数 value 和图片的大小并不是线性相关。我也没有去深层研究内部构造,根据试参,重新写了算法。原创 2020-07-07 21:01:25 · 517 阅读 · 0 评论 -
C#中常用的加密算法的封装
DES加密是对称加密算法,对称加密算法的优点是速度快,缺点是密钥管理不方便,要求共享密钥原创 2020-07-01 21:41:35 · 402 阅读 · 0 评论 -
C# 中的常用的反射方法
目录前言:一、项目结构二、创建对象并调用方法1. 获取类型2. 创建对象 (构造函数重载)3. 调用方法 (无参非重载)4. 调用方法 (一个参数非重载)4. 调用方法 (静态方法)5. 调用方法 (重载无参)6. 调用方法 (重载有参)7. 调用方法 (重载有参)8. 调用私有方法9. 获取类型 (泛型)10. 访问私有构造函数创建对象11. 调用泛型方法三、创建对象并修改属性和字段1. 遍历属性2. 便利字段前言:反射提高了程序的灵活性和扩展性。降低耦合性,提高自适应能力。它允许程序创建和控制原创 2020-06-16 22:00:48 · 732 阅读 · 0 评论 -
在 .NET Core 和 ASP.NET Core 中使用 Serilog
目录前言:前言:本文使用的 .NET Core SDK 3.1 版本。与.NET的其他日志记录库不同,在 Serilog 中和日志消息一起传递的参数不会破坏性地呈现为文本格式,而是作为机构化数据保留。在 Serilog 的 NuGet 包中,Serilog.AspNetCore 是所有常用包的集合。所以你不管是控制台程序还是Web程序直接引入 Serilog.AspNetCore 即可:...原创 2020-03-14 19:33:48 · 1426 阅读 · 0 评论 -
使用 IdentityServer4 隐式流(Implicit)保护 Vue(SPA)客户端
目录前言:前言:该文章 Vue 用 Vue CLI 3.0 创建的 Vue + TypeScript + Sass 的项目。原创 2020-03-10 22:33:12 · 2439 阅读 · 3 评论 -
ASP.NET Core 中的选项模式
一、依赖注入的生命周期在选项模式中实例的生命周期由注入时使用的接口决定,有IOptions 、 IOptionsMonitor 和 IOptionsSnapshot共三个,其中 IOptions 、 IOptionsMonitor 的生命周期是单例模式,生命周期和 AddSingleton 类似,IOptions 没有数据热更新,读取的值永远不会变。IOptionsMonitor 和 I...原创 2020-03-10 22:29:55 · 1294 阅读 · 0 评论 -
.NET Core 和 ASP.NET Core 中的日志框架
目录前言:一、在控制台应用程序中使用日志框架1) 日志的简单使用前言:本文使用的 .NET Core SDK 3.1 版本。本文将主要介绍ASP.NET Core自带的日志 Microsoft.Extensions.Logging 程序包的使用,主要演示如何在 ASP.NET Core Web 应用程序 和 控制台应用程序 中使用 Microsoft.Extensions.Logging...原创 2020-03-10 22:01:24 · 1752 阅读 · 0 评论 -
.NET Core 中使用强类型对象承载配置数据
目录前言:前言:本章节引入了 Microsoft.Extensions.Configuration.Json ,Microsoft.Extensions.Configuration.Binder 两个程序包。原创 2020-02-25 22:32:30 · 232 阅读 · 0 评论 -
使用 BackgroundWorker 执行任务并监控线程进度
目录前言:示例前言:该示例适用于任务执行时返回进度。示例示例 UI 基本为如下图示例代码如下 private BackgroundWorker _bw; /// <summary> /// 开始按钮 /// </summary> /// <param name="sender"></param...原创 2019-12-22 08:35:40 · 253 阅读 · 0 评论 -
使用 CancellationTokenSource 中止 Task
目录前言:示例前言:该示例适用于中止 Task示例示例 UI 基本为如下图示例代码如下 private CancellationTokenSource _cts; /// <summary> /// 开始按钮 /// </summary> /// <param name="sender"><...原创 2019-12-21 22:46:13 · 313 阅读 · 0 评论 -
在 CentOS 7 安装 .Net Core SDK
目录前言:一、注册Microsoft密钥和源二、安装.NET安装.NET Core SDK安装ASP.NET Core运行时安装.NET Core运行时三、如何安装其他版本参考文档前言:在安装.NET之前,需要:注册Microsoft密钥注册产品资料库安装所需的依赖项一、注册Microsoft密钥和源在安装.NET之前,您需要:注册Microsoft密钥注册产品资料库安...原创 2019-12-16 21:31:56 · 576 阅读 · 0 评论 -
.NET Fx 使用 log4net 接入 ELK
目录一、引入NuGet包二、配置 log4net三、记录日志一、引入NuGet包接入ELK首先需要引入 log4net 和 log4net.ElasticSearch 两个包。直接使用程序包管理器控制台Install-Package log4netInstall-Package log4net.ElasticSearch二、配置 log4netlog4net.config 配置文...原创 2019-11-15 18:48:27 · 478 阅读 · 0 评论 -
正则表达式中匹配中括号 [ ]
在正则表达式是想要匹配 [ 和 ] 需要用 双斜杠 \ 双重转义: // 字符串 string characterString = &amp;quot;{[1,2,3,4],'aaa'}&amp;quot;; //根据正则匹配 Match matchData = Regex.Match(characterString, &amp;quot;(\\[).*?(\\])&amp;quot;, RegexO原创 2018-11-02 18:27:04 · 37682 阅读 · 3 评论 -
.NET Core环境变量和用户秘钥实现开发中的数据安全
目录一、注入 IConfiguration二、从配置文件 appsettings.json 中获取环境变量三、从项目中获取环境变量四、用户秘钥设置环境变量前言:有很多人将秘钥,数据库连接字符串写到项目配置文件中,并提交到源代码控制或者共享源代码控制,并在那里使用,这使得项目出现了很大的风险。首先新建一个 ASP.NET Core 的 MVC 项目,就可以直接进行测试。一、注入 IConfig...原创 2018-11-05 23:43:44 · 649 阅读 · 0 评论 -
在 ASP.NET Core 中使用 AutoMapper 使 Entity 和 Resource 之间进行映射
目录从 NuGet 安装 AutoMapper添加 Entity类 和 Resource类添加一个 Profile文件,配置映射关系在Startup中对AutoMapper进行注册在项目中使用AutoMapper进行映射从 NuGet 安装 AutoMapper在使用 AutoMapper 时,核心的包是 AutoMapper 和 AutoMapper.Extensions.Microsoft...原创 2019-03-08 21:25:18 · 1128 阅读 · 0 评论 -
.NET 中数据访问用的 DBHelper(Sql Server) 类
public class DBHelper { private static string DBConnectString = "Data Source=.;Initial Catalog=Roseonly;Integrated Security=True"; private static SqlConnection conn; pu...原创 2019-03-08 21:48:31 · 882 阅读 · 0 评论 -
在 .NET Core 中使用 FluentValidation 进行验证
目录从 NuGet 安装 FluentValidation争对 Resource类 建立FluentValidation在Startup中对写好的验证进行注册从 NuGet 安装 FluentValidation使用 FluentValidation 时,核心的包时 FluentValidation 和 FluentValidation.AspNetCore。使用 NuGet 包管理控制台运...原创 2019-03-09 17:39:31 · 1816 阅读 · 1 评论 -
使用 IdentityServer4 客户端凭证(ClientCredentials)访问受保护资源
目录前言:一、创建项目二、IdentityServer 项目1) 将 json config 修改为 code config2) Config.cs 修改三、Api 项目1) 配置 Startup.cs2) IdentityController.cs 文件四、ConsoleClient 项目1) 修改ConsoleClient.csproj 文件2) 修改Program.cs 文件参考文档前言:...原创 2019-05-09 18:11:09 · 1134 阅读 · 0 评论 -
使用 IdentityServer4 资源所有者密码凭证(ResourceOwnerPassword)访问受保护资源
目录前言:一、创建项目二、Api 项目1) 配置 Startup.cs2) IdentityController.cs 文件三、IdentityServer 项目1) 将 json config 修改为 code config2) 修改 Config.cs 文件四、WpfClient 项目1) 修改 MainWindow.xaml 文件2) 修改 MainWindow.xaml.cs 文件参考文档...原创 2019-05-09 20:30:24 · 1266 阅读 · 0 评论 -
使用 IdentityServer4 授权码(Authorization Code)保护 ASP.NET Core 客户端并访问被保护资源
目录前言:一、创建项目参考文档前言:资源所有者密码凭证(例如用户名和密码)直接被用来请求 Access Token通常用于遗留的应用资源所有者和客户端应用之前必须高度信任其他授权方式不可用的时候才使用,尽量不用一、创建项目参考文档Requesting Claims using Scope Values - OIDCResource Owner Password Cred...原创 2019-05-10 16:46:42 · 2663 阅读 · 3 评论 -
.NET 高性能泛型缓存
目录前言:一、创建项目二、IdentityServer 项目1) 将 json config 修改为 code config2) 修改 Config.cs 文件三、Api 项目1) 配置 Startup.cs2) IdentityController.cs 文件3) TodoController.cs 文件四、Vue 项目参考文档前言:该文章 Vue 用 Vue CLI 3.0 创建的 Vu...原创 2019-08-09 23:40:27 · 1107 阅读 · 0 评论 -
C# 同步方法转换为异步方法
一个普通方法需要用异步方法返回可以用 Task.FromResult() 和 Task.Run() 。一个异步方法需要在普通方法中调用时,可以用 (Task).GetAwaiter().GetResult() 来获取同步值。 static async void Main(string[] args) { int a = await ResultZeroAsync(...原创 2019-08-16 18:16:32 · 3982 阅读 · 0 评论