
C#遗忘系列
文章平均质量分 55
C#遗忘系列
~风清扬~
网站建设,软件开发,系统集成
展开
-
使用.NET8构建一个高效的时间日期帮助类
通过上述步骤,我们实现了一个高效的时间日期帮助类,能够方便地格式化日期时间和调整查询时间范围。该类不仅提高了代码的可读性和维护性,还确保了日期时间处理的一致性和准确性。原创 2025-04-08 22:17:18 · 178 阅读 · 3 评论 -
ASP.NET Core最佳实践和进阶主题--微服务和容器化
微服务(Microservices)是一种软件架构风格,其中软件系统被划分为一组小型、自治的服务单元,这些服务单元围绕着业务能力进行组织,并通过轻量级的通信机制相互协作。每个微服务都是独立开发、部署和运行的,可以使用不同的编程语言和技术栈来实现,同时还可以独立地进行扩展和升级。容器化是一种虚拟化技术,它通过在操作系统级别隔离应用程序及其依赖项的运行环境来实现轻量级、快速部署和可移植性。原创 2025-01-23 20:10:12 · 621 阅读 · 11 评论 -
ASP.NET Core--依赖注入(DI)--在ASP.NET Core中使用依赖注入
在ASP.NET Core中实现依赖注入的第二步是定义服务。服务是应用程序中需要注入到其他组件的对象或类。服务可以是瞬态、作用域或单例的,这取决于它们是如何注册的。创建服务类创建一个类,它实现了某个接口或继承自某个基类。这个类就是你的服务类,它包含了实现逻辑。如果服务类没有对应的接口或基类,也可以直接创建一个类,但最好还是提供一个接口或基类以支持依赖注入的灵活性。定义接口或基类如果你创建了一个服务类,那么应该为它定义一个接口或基类,以便其他组件可以依赖注入这个服务。原创 2025-01-19 14:29:19 · 1316 阅读 · 4 评论 -
ASP.NET Core 基础知识---依赖注入(DI)---生命周期和作用域
在ASP.NET Core中,依赖注入(DI)系统提供了三种服务生命周期:瞬时(Transient)、作用域(Scoped)和单例(Singleton)。瞬时服务在每个请求中都会创建新实例,适合无状态或无须共享数据的依赖项。作用域服务在请求期间重复使用同一个实例,适用于需要保持状态或数据的依赖项。单例服务在整个应用程序生命周期中只有一个实例,适用于全局配置或长时间运行的任务。原创 2025-01-15 09:30:41 · 801 阅读 · 8 评论 -
ASP.NET Core的部署、维护、日志记录和错误处理
ASP.NET Core 日志记录和错误处理是开发 ASP.NET Core 应用程序中至关重要的方面。本文介绍了日志记录和错误处理的基本概念、内置提供程序、第三方提供程序以及它们在应用程序开发中的应用。在文章中,我们首先讨论了日志记录的概念,它是记录应用程序运行时状态、活动和事件的过程。随后,我们介绍了 ASP.NET Core 内置的日志记录提供程序,包括控制台、调试、事件源、EventLog、TraceSource 等。通过使用这些内置提供程序,开发人员可以方便地记录日志并查看应用程序的运行情况。原创 2025-01-11 09:49:53 · 942 阅读 · 2 评论 -
C#数据库操作系列---SqlSugar完结篇
之前介绍了针对单个表的查询,同样也是相对简单的查询模式。虽然开发完全够用,但是难免会遇到一些特殊的情况。而下面这些方法就是为了解决这些意料之外。原创 2025-01-06 23:53:15 · 2640 阅读 · 8 评论 -
C#数据库操作---SqlSugar 增删改查详解
SqlSugar在操作的时候需要一个Client,用来管理数据库连接,并操作数据库。SqlSugar 提供了一个SimpleClient,这里面有很多可以直接拿来用的方法,而且这个是一个泛型类。也就是说我们可以使用它对单个实体类进行操作,这在开发中很重要。对于一个程序而言,数据就像是血液一样重要。对于框架,插入是一切来源的基础。原创 2025-01-02 18:59:36 · 1459 阅读 · 5 评论 -
C#常见算法总结
一、List集合相关算法。原创 2024-12-31 16:16:36 · 620 阅读 · 5 评论 -
C#数据库操作---深入探索SqlSugar
在实际开发中,程序中的实体类和数据库的表名并不能完全一致,造成的原因有很多,例如说团队对数据库的命名和对程序的命名有着不同的要求,数据库是先建立的而程序是后开发的,又或者是程序只使用了数据库中一部分表等等。这时候就会与C#约定优于配置相违背,但是这也符合C#的设计哲学,因为配置也是C#的一部分。我们该如何从实际角度来完成表与实体类之间的关系建立呢?原创 2024-12-28 16:10:15 · 1351 阅读 · 6 评论 -
将ASP.NET Core Web API和Blazor Wasm发布到 IIS
安装 .NET Core 托管捆绑包(Hosting Bundle)在将 .NET Core 应用程序部署到 IIS 时是一个必要的步骤。Internet Information Services (IIS) 是一种灵活、安全且可管理的 Web 服务器,用于托管 Web 应用(包括 ASP.NET Core)。此模块默认不安装,且不适用于安装为 Web 服务器 (IIS) 角色服务功能。在生产环境中展示 Swagger 通常是不推荐的,因为它可能会暴露你的 API 文档,增加安全风险。转载 2024-12-24 16:47:42 · 142 阅读 · 6 评论 -
C#经典算法面试题
(1)、质数的理解:质数就是所有比1大的整数中,除了1和它本身外,不再有别的约数。判断数N是否为质数要直接从3开始判断(如果N不是2),首先不能是偶数,然后再判断是否能被3、5、7....整除,直到sqrt(N)止。b.该数字各位数字之和为偶数,如数字12345,各位数字之和为1+2+3+4+5=15,不是偶数。> 一个正整数的阶乘(factorial)是所有小于及等于该数的正整数的积,并且0的阶乘为1。## 求以下表达式的值,写出您想到的一种或几种实现方法: 1-2+3-4+……原创 2024-12-19 16:28:36 · 777 阅读 · 3 评论 -
.NET 9 中 LINQ 新增功能实现过程
语言集成查询 (LINQ) 是一系列直接将查询功能集成到 C# 语言的技术统称。数据查询历来都表示为简单的字符串,没有编译时类型检查或 IntelliSense 支持。此外,需要针对每种类型的数据源了解不同的查询语言:SQL 数据库、XML 文档、各种 Web 服务等。借助 LINQ,查询成为了最高级的语言构造,就像类、方法和事件一样。原创 2024-12-03 10:38:41 · 1184 阅读 · 16 评论 -
DotNet使用CsvHelper快速读取和写入CSV文件的操作方法
CsvHelper是一个.NET开源、快速、灵活、高度可配置、易于使用的用于读取和写入CSV文件的类库。.csv 文件是一种用于存储表格数据的文本文件,CSV 是 "Comma-Separated Values" 的缩写,意思是 "逗号分隔值"。CSV 文件是一个存储表格和电子表格信息的纯文本文件,其内容通常是一个文本、数字或日期的表格。CSV 文件可以使用以表格形式存储数据的程序轻松导入和导出。/// 学生学号set;/// 学生姓名set;/// 学生年龄set;/// 班级set;原创 2024-11-11 16:14:21 · 405 阅读 · 17 评论 -
Log4Net配置详解及输出自定义消息类示例代码
自定义扩展输出,通过继承 log4net.Layout.PatternLayout 和 log4net.Layout.Pattern.PatternLayoutConverter 类,使用 log4net.Core.LoggingEvent 类的方法得到了要输出的 LogEntity 类的名称。然后通过反射得到各个属性的值,使用 PatternLayout 类 AddConverter 方法传入得到的值,在 PatternLayoutConverter 中对其进行处理。原创 2024-10-28 09:26:20 · 2018 阅读 · 23 评论 -
ASP.NET Core中创建中间件的几种方式
首先我们创建一个自定义中间件类,它将记录每个请求的详细信息。// 记录请求信息// 调用下一个中间件// 记录响应状态码在Program.cs文件中,使用自定义中间件。// 使用自定义中间件app.Run();实现 IMiddlewareFactory 接口的自定义工厂类。// 使用服务提供者创建中间件实例// 如果需要,可以在这里释放中间件实例(容器负责释放资源).Dispose();实现 IMiddleware 接口的自定义中间件类。原创 2024-10-23 15:23:25 · 527 阅读 · 27 评论 -
asp.net core调用wps实现word转pdf的方法
asp.net core也可以问题根本原因是路径的问题,不能些相对路径,必须绝对路径。如果发现还是不行,最后换成.net framework 4.8的控制台项目。准备一个word文档,名字叫001.docx,随便编写一些文字内容。添加dll的引用,dll需要去安装的wps里面查找。添加com引用,搜索wps。要选择一下32位程序。原创 2024-09-16 20:52:26 · 1565 阅读 · 31 评论 -
asp.net MVC 根据菜单树类别不同动态加载视图的实现步骤
这样,当用户访问不同的菜单项时,ASP.NET MVC 将根据类别加载相应的视图,并显示特定类别的内容。在视图中,根据每个菜单项的类别动态加载对应的部分视图。如果你想在用户点击菜单项时动态加载部分视图,可以使用 Ajax。这样,点击菜单项时,将通过 Ajax 请求加载相应的视图内容。动态加载视图,确保视图根据菜单项的类别正确显示。在控制器中,构建你的菜单树,并传递给视图。首先,创建不同类别的部分视图。创建与每个类别对应的部分视图,例如。其他类别的部分视图可以类似创建。属性,表示菜单项的类别。原创 2024-09-11 22:59:52 · 455 阅读 · 25 评论 -
在.NET6中使用配置Quartz.NET定时任务并使用IHostedService实现项目启动自动加载任务
Quartz.Net是一个强大、开源、轻量的作业调度框架,在平时的项目开发当中也会时不时的需要运用到定时调度方面的功能,如果每天需要跑任务的话,你肯定不会写个while循环,里面进行任务作业吧,这样是很耗线程的,很耗资源的。所以就有目前的定时任务框架。以上就是我之前在项目中使用定时任务的一些逻辑和代码,当然了我还参照了目前的开源项目 https://gitee.com/hzy6/hzy-quartz 一些设计思想和代码,基本上在项目中可以随便使用。具体的一些执行逻辑就可以自己去写。原创 2024-09-06 10:05:33 · 1536 阅读 · 21 评论 -
Asp.net实现手写验证码的操作代码
众所周知,一般我们日常碰到的验证码是一个图形样式的,列入这个样子的,那么在这个图片里面我们想实现我们自己界面上有这样的一个验证码就需要做两个操作,一个是在我们自己界面上生成如图所示的一个验证码图片,第二个操作就是将验证码里面的字符和用户输入的字符对比。这篇文章主要介绍了Asp.net实现手写验证码的操作代码,首先我们来实现生成 生成验证码的这一部分,这时候我们需要封装一个类,里面有生成图片和字符的方法,其实本质上就是一个随机数,这个类卸载Model里面即可,具体操作代码跟随小编一起看看吧。原创 2024-08-04 23:02:32 · 407 阅读 · 8 评论 -
ASP.NET Core Web中使用AutoMapper进行对象映射
在日常开发中,我们常常需要将一个对象映射到另一个对象,这个过程中可能需要编写大量的重复性代码,如果每次都手动编写,不仅会影响开发效率,而且当项目越来越复杂、庞大的时候还容易出现错误。为了解决这个问题,对象映射库就随之而出了,这些库可以自动完成对象之间的映射,从而减少大量的开发工作量,提高开发工作效率。今天我们来讲讲在ASP.NET Core Web中使用AutoMapper快速进行对象映射。原创 2024-07-25 00:02:56 · 988 阅读 · 10 评论 -
.Net8.0 WebApi发布到IIS详细步骤
NET 8 是微软于2021年8月24日宣布的下一代编程语言和框架,它是 .NET 的一部分,与 C# (Common Language Infrastructure) 紧密集成。.NET 8 还支持本机 (native) AOT (Ahead-Of-Time) 编译,以提高性能和启动速度。启用32位应用程序,默认False 本文改为 True,本文实际测试过程中,True和False没有区别。点击确定,在新的应用程序池上右键--高级设置。打开要发布的项目,在项目右键点击发布。原创 2024-07-18 23:45:40 · 2425 阅读 · 7 评论 -
DotNET使用原生方法实现文件的压缩和解压
在.NET中实现文件或文件目录压缩和解压可以通过多种方式来完成,包括使用原生方法(System.IO.Compression命名空间中的类等)。本文我们主要讲的是如何使用.NET原生方法命名空间中的类来对文件和文件夹进行压缩或解压缩(压缩格式.zip文件格式。原创 2024-07-09 14:31:59 · 1164 阅读 · 9 评论 -
DotNet实现手写验证码的操作代码
众所周知,一般我们日常碰到的验证码是一个图形样式的,列如这个样子的,那么在这个图片里面我们想实现我们自己界面上有这样的一个验证码就需要做两个操作,一个是在我们自己界面上生成如图所示的一个验证码图片,第二个操作就是将验证码里面的字符和用户输入的字符对比。首先我们来实现生成 生成验证码的这一部分,这时候我们需要封装一个类,里面有生成图片和字符的方法,其实本质上就是一个随机数,这个类写到Model里面即可。然后我们需要在我们需要的控制器里面调用这个类,用户比较的时候就拿第二个方法里面的字符去比较就可以了。原创 2024-05-27 23:06:49 · 479 阅读 · 9 评论 -
Autofac的几种方式
具体来说,UseServiceProviderFactory 方法接受一个实现了 IServiceProviderFactory 接口的容器工厂实例作为参数。通过使用不同的容器工厂,可以使用第三方的依赖注入容器(如 Autofac、Ninject 等),以替代默认的 ASP.NET Core 依赖注入容器。CreateBuilder 方法将在应用程序启动时被调用,用于创建容器构建器,以及在其中进行服务的注册和配置。3:接口和派生类(业务层面)原创 2024-05-08 15:02:11 · 562 阅读 · 7 评论 -
Autofac:一个轻量级的依赖注入(DI)框架
在此示例中,我们创建了一个 MyController 类,并在其中使用 Inject 属性注解标记了一个 IMyService 类型的属性 MyService。在此示例中,我们首先创建了注册器 builder,并向其注册了一个 MyService 类型作为 IMyService 接口的实现。Autofac 是一个轻量级的依赖注入(DI)框架,它可以帮助 .NET 开发人员更好地管理对象的生命周期和依赖关系。除了普通的组件注册外,Autofac 还支持多种不同的注册方式,如 XML 配置文件、属性注解等。原创 2024-05-06 17:24:13 · 624 阅读 · 6 评论 -
C#中Eval()日期时间的格式化
【代码】C#中Eval()日期时间的格式化。原创 2024-04-25 10:57:33 · 369 阅读 · 3 评论 -
扩展Web.config配置文件里的appSettings节点和connectionStrings节点配置项过多,提取出来独立配置
在Web.config配置文件里的configuration节点下》这样写你的 connectionStrings。在Web.config配置文件里的configuration节点下》这样写你的 appSettings。我们拿 Web.config配置文件里的configuration》appSettings》举例。然后在项目根目录的“Configs”文件夹下新建一个database.config配置文件。然后在项目根目录的“Configs”文件夹下新建一个system.config配置文件。转载 2024-04-24 13:11:31 · 411 阅读 · 2 评论 -
Entity Framework 数据转换层通用类
首先通过反射获取主实体的主键Id,然后建立EntityKey对象,再通过 ObjectContext.GetObjectByKey(entityKey)方法在当前上下文当中获取此实体,最后通过 ObjectContext.ApplyCurrentValues 方法,把新加入的实体的属性复制当前上下文。此时使用类似的方法,利用 RelatedEnd.Load() 把导航属性提前加入到上下文中,再删除Company对象时,系统就可以把对应 Position 对象一并删除。原创 2024-04-19 23:57:45 · 1038 阅读 · 6 评论 -
深入探讨C#中的递归算法
在C#中,实现递归算法有直接递归和间接递归两种方式。因此,在使用递归算法时,需要合理处理递归终止条件,并对问题规模进行评估,以确保算法的正确性和效率。递归算法通常用于解决重复性的问题。间接递归是指在函数或方法的实现过程中,调用了其他函数或方法,而这些函数或方法又直接或间接地调用了自身。因此,在使用递归算法时,需要注意递归的层数和问题规模,以及对递归终止条件的合理处理,以避免资源浪费和性能问题。当n等于0或1时,递归终止,否则继续进行递归调用。在C#中,实现递归算法主要有两种方式:直接递归和间接递归。原创 2024-03-08 21:18:19 · 1298 阅读 · 1 评论 -
深入了解C#中的PropertyInfo类
通过PropertyInfo类,我们可以方便地获取属性的名称、类型和访问权限,并且可以通过反射机制动态地读取和写入属性的值。在实际开发中,PropertyInfo类的灵活使用可以帮助我们更好地操作对象的属性,提升编程的效率和灵活性。通过PropertyInfo类,我们能够获取属性的名称、类型、访问权限等信息,并可以通过反射机制进行动态的读取和写入属性的值。除了获取属性的名称和类型外,PropertyInfo类还提供了GetValue和SetValue方法来动态的读取和写入属性的值。获取属性的名称和类型。原创 2024-03-05 21:55:53 · 1941 阅读 · 5 评论 -
ASP.NET Core (.NET 7) 中的速率限制中间件
ASP.NET Core 中的速率限制中间件可以用于限制特定资源在一段时间内允许的请求次数。速率限制可以用于保护服务器资源,防止拒绝服务 (DoS) 攻击。Microsoft.AspNetCore.RateLimiting 或 AspNetCoreRateLimit 中间件提供速率限制中间件。应用可配置速率限制策略,然后将策略附加到终结点。转载 2024-02-07 13:44:18 · 731 阅读 · 4 评论 -
C#实现 Windows 11 快捷键切换声音输出设备
Windows 11上使用.NET(C#) 实现通过快捷键切换声音输出设备的功能,需要能够实现监听全局快捷键,和切换声音输入设备的方法。而切换声音输入设备的功能,需要通过使用Core Audio API进行实现。然而,直接从.NET访问这些底层API需要使用P/Invoke(平台调用服务)来调用Windows的非托管API,这可能相对复杂且容易出错。一般需要使用第三方库来简化实现过程,本文主要介绍.NET(C#) 中实现 Windows 11 快捷键切换声音输出设备方法。原创 2024-02-06 11:17:42 · 1307 阅读 · 1 评论 -
C#使用Stopwatch实现执行耗时及性能监测
1)命名空间2)字段字段字段说明Frequency获取以每秒刻度数表示的计时器频率。此字段为只读。指示计时器是否基于高分辨率性能计数器。此字段为只读。3)属性属性属性说明Elapsed获取当前实例测量得出的总运行时间。获取当前实例测量得出的总运行时间(以毫秒为单位)。获取当前实例测量得出的总运行时间(用计时器刻度表示)。IsRunning获取一个值,该值表示 Stopwatch 计时器是否正在运行。4)方法方法方法说明确定指定对象是否等于当前对象。原创 2024-01-16 23:54:58 · 2168 阅读 · 5 评论 -
.NET 7(C#)配置使用log4net日志框架的方法
log4net 是一个高效、灵活且广泛使用的日志记录库,专门用于 .NET 框架。它是 Apache 的一个开源项目Apache log4j框架在Microsoft .NET平台的实现。log4net 旨在提供一个简单、易用但功能强大的日志系统。本文主要介绍.NET 7 中配置使用log4net,以及相关示例代码。原创 2023-12-25 22:14:09 · 3451 阅读 · 2 评论 -
(C#)使用sharpcompress压缩解压文件(.rar,.zip,tar.bz2,.7z,.tar.gz)
使用Nuget搜索sharpcompress,点击安装即可。1).zip文件压缩代码。2).zip文件解压代码。原创 2023-12-07 22:04:27 · 2163 阅读 · 0 评论 -
C#调用cmd.exe(dos命令)两种方法(Process,Cli)
4)通过控制台应用程序中传递参数获取输出结果。2)运行cmd命令隐藏控制台窗口。1)C#运行shell命令。3)运行cmd命令参数配置。通过Nuget安装Cli。原创 2023-12-06 14:32:15 · 1593 阅读 · 0 评论 -
Json.NET 单个对象Json字符串反序列成两个不同实体对象
本文主要介绍Newtonsoft.JSON(Json.NET)中,将一个对象的Json字符串反序化成两个不同的实体对象的方法代码。原创 2023-12-04 23:51:12 · 444 阅读 · 0 评论 -
C#.Net EF(Entity Framework 6) SQLite配置使用(codefirst)
本文主要介绍在.Net(C#)中,使用Entity Framework 操作Sqlite数据库,并且通过codefirst实现自动创建SQLite数据库和表,以及一些常用操作和配置。项目名上右键 =》点击"管理Nuget程序包" =》搜索",自动生成修改的配置文件,有时会有问题,我之前就被坑了。1)新建ORMContext类继承DbContext。如果出现奇怪的问题,仔细检查一下配置文件中。2)Web网站用到的配置文件。" 这3个包进行安装。1)控制台程序配置文件。3)使用操作示例代码。原创 2023-12-03 20:44:54 · 2068 阅读 · 0 评论 -
C#后台发送Get和Post请求的几种方法总结
适用平台:.NET Framework 4.5+, .NET Standard 1.1+, .NET Core 1.0+适用平台:.NET Framework 1.1+, .NET Standard 2.0+, .NET Core 1.0+适用平台:.NET Framework 1.1+, .NET Standard 2.0+, .NET Core 2.0+命名空间:using System.Net.Http;1)Flurl.Http(可以通过Nuget来安装)命名空间:using Flurl.Http;原创 2023-12-02 22:16:51 · 1242 阅读 · 0 评论 -
C#8.0中新语法“is {}“的介绍及使用
操作符检查表达式的结果是否与给定类型兼容,或者(从c# 7.0开始)根据模式测试表达式。以下示例将类型和常量模式组合在一起,以测试对象是否为Dice实例,如果是,则确定掷骰的值是否为6。使用常量模式执行模式匹配时,is测试表达式是否等于指定的常量。:它测试表达式是否可以转换为指定的类型,如果可以,则将其强制转换为该类型的变量。测试表达式是否可以转换为指定的类型,如果可以,将其强制转换为该类型的变量。语句的直接扩展,可以实现简洁的类型评估和转换。:匹配成功并且将表达式的值绑定到新的局部变量的匹配。原创 2023-11-23 09:08:02 · 1201 阅读 · 0 评论