依赖注入接口多实现如何获取指定服务
原为链接 https://www.cnblogs.com/ysmc/p/18794061
在上一个文章中,我们讲过 键控服务 服务,可惜的是这个需要 .NET 8 才能使用,那我们在 .NET 8 之前应该怎么找到我们需要的服务呢,本文给大家讲讲使用特性的方式
本人依旧秉承着短小精悍,废话不多,直接上代码!
首先,我们写一个特性,自定义特性 ...
Ai满嘴顺口溜,想考研?浪费我几个小时
Trae + claude3.7
事情的经过是这样的:
我有个方法代码如下:
/// <summary>
/// 获取客户端列表
/// </summary>
/// <param name="input">查询条件参数,包含搜索、排序和分页信息</param>
/// <param name="cancellationToken">异步取消标记</param>
/// <returns>客户 ...
开发的设计和重构,为开发效率服务
软件开发有点类似于艺术品的雕刻,需要不断的打磨。在我们基于一套成熟的架构开发一套软件后,往往都还是需要反复的推敲,进行不断的重构优化,使得重复的代码、硬编码等地方越来越少,也使得某些逻辑越来越有弹性化。软件开发和艺术品又有所不同,艺术品可能很容易完工并封刀,而软件开发却是持续的改进,软件最终的持续改 ...
依赖项注入-键控服务
键控服务是指使用密钥注册和检索依赖项注入 (DI) 服务的机制。 通过调用 AddKeyedSingleton (或 AddKeyedScoped 或 AddKeyedTransient)来注册服务,与密钥相关联。 使用 [FromKeyedServices] 属性指定密钥来访问已注册的服务。
以往我们的接口有多个实现,在使用时想指定使用某一个服务,往往会增加一个特性,或 ...
HttpClient 使用(二)流式请求
原文地址:https://www.cnblogs.com/ysmc/p/18780674
近年AI风靡全球,我们日常见到的最多的就是跟AI聊天,极大减少了我们的搜索时间,不过大家也要注意甄别AI回答的正确性,身体不舒服还是老老实实看医生。
AI聊天的输出是逐字输出的,有些小伙伴就很好奇这个是怎么实现的,比较简单的就是SSE,高级点的是WebSocke ...
ASP.NET Core WebApi+React UI开发入门详解
在前段时间,有粉丝反馈能否写一篇基于ASP.NET Core Web Api+React UI进行Web开发的文章,经过查阅相关资料,发现Visual Studio 2022已经集成相关模板,可以在Visual Studio中直接创建项目项目,今天以一个小例子,简述ASP.NET Core Web Api+React UI开发系统的基本步骤,仅供学习分享使用,如有不足之处,还请指正。
  ...
C# - 获取枚举描述 - 使用增量源生成器
前言
C# 获取枚举描述的方法有很多, 常用的有通过 DescriptionAttribute 反射获取, 进阶的可以加上缓存机制, 减少反射的开销。今天我们还提供一种更加高效的方法,通过增量源生成器生成获取枚举描述的代码。这是在编译层面实现的, 无需反射, 性能更高。
本文的演示代码基于 VS2022 + .NET 8.0 + .NET Standard 2.0
1. 基 ...
WinForm 使用 Win32 API 实现的无边框窗口
WinForm 使用 Win32 API 实现的无边框窗口
前言
时光荏苒,转眼已近是2025年了。不知不觉两年多没有研究代码了,在这期间 .NET 10 都快 RC 了,前几天刷手机看到张队公众号里有关于 .NET 9.0 AOT 发布的内容,所以写了这些代码来测试一下 AOT 编译的效果,并评估未来是否开发支持 AOT 编译的 NanUI 新版本。
关于 NanUI 项 ...
dotnet 源代码生成器分析器入门
恭喜你看到了本文,进入到 C# dotnet 的深水区。如果你还是在浅水玩耍的小鲜肉,推荐你点击右上方的关闭按钮,避免受到过于深入的知识的污染
我所在的团队在 Rosyln 刚出来没两年就开始玩了,那时候还没有现在这么多机制。我之前很多关于 Rosyln 的博客都涉及到了很底层的玩法,导致入门门槛过高。随着 dotnet 生态的不断建 ...
[WPF] 在RichTextBox中输出Microsoft.Extension.Logging库的日志消息
背景
微软的日志库一般是输出到控制台的,但是在WPF中并不能直接使用控制台,需要AllocConsole。
但是这种做法个人觉得不太安全(一关闭控制台整个程序就退出了?)。这时候就需要一个更加友好的方式输出日志。
问题
那如何将日志的内容显示到RichTextBox中?
实现LoggerProcessor
这里参照官方的ConsoleLoggerProcessor,但是 ...
针对于基于surging的dotnetty组件内存泄漏问题
一、概述
前段时间客户碰到基于surging内存泄漏问题,邀请我来现场帮忙解决,对于dotnetty 我一直又爱又恨,因堆外内存DirectByteBufferChunk 中PoolChunk映射分配的16mb始终无法销毁,后面设置优化了dotnetty 环境变量参数,未在同一线程下导致引用计数出现错乱,从而导致的内 ...
ASP.NET Core 模型验证消息的本地化新姿势
最近在研究系统本地化的问题,不可避免要实现模型类的验证消息本地化。毕竟这些错误消息是要返回给用户的。
疑问产生
在MVC模型下,我们会使用模型类对请求参数进行绑定和验证。举个例子:
public class UserDto
{
[Required(ErrorMessage = "姓名不能为空")]
public string Name{get; set;}
[Required(Error ...
WPF 你真的会写 XAML 吗?浅谈 ControlTemplate 、DataTemplate 和其它 Template
WPF 你真的会写 XAML 吗?浅谈 ControlTemplate 、DataTemplate 和其它 Template
本文希望从写死的代码慢慢引入 WPF 的一些机制。
一、Button 难题
我们想要修改 Button 的背景色但是效果非常不理想,默认的 Button 样式是完全无法给大家看的,改造 Button 的方法是借助 Style 在 Template 中自定义 ControlTemplate(Sty ...
分享报表工具核心三种扩展模型示例
报表工具的核心是父子格扩展模型,通过父子格扩展模型实现各种类型报表,例如网格式报表、行式报表、主子报表、分组报表、交叉报表等。报表有三种扩展模型父子格扩展模型双父格扩展模型兄弟格扩展模型父子格扩展模型B7单元格是第7行所有其它单元格的父格,其它单元格随父格扩展,生成明显列表。双父格扩展模型B2单元格 同时 ...
利用C#9.0中的record提高性能
C#9.0是2020年发布的,record特性还没用上的可以看过来,一起讨论下。
下面通过一个简单的示例演示record带来的好处。
1. 通过一个示例引出问题
public class Person
{
public string Name { get; set }
...
}
public class ClassA
{
public static List<erson> Items=new List<erson>{......};
public Lis ...
SqlServer 中行转列PIVOT函数用法
SqlServer 中行转列PIVOT函数用法
前言
最近在面试的时候,碰到了手写sql的题目,这让我这个面向AI的程序员着实难看。只见我面露难色,绞尽脑汁的情况下,终于还是放弃了。
这道题目不难,但是由于平时几乎没有遇到行转列的情况,导致在手写时忘记了PIVOT函数怎么使用😩。
面试准备不充分给自己找借口,菜就多练,不会写就 ...
.NET8中gRPC的使用
在现代分布式系统中,服务之间的通信是一个非常重要的环节。随着微服务架构的流行,服务之间的通信方式也在不断演进。gRPC作为一种高性能、跨语言的RPC框架,逐渐成为了我们的首选。
一、简介
gRPC 是一种高性能、开源的远程过程调用(RPC)框架,基于 HTTP/2 协议,支持双向流、头部压缩等特性。它默认使用 Protocol Buf ...
通过C#转换图片到PDF文档
将图片(JPG、PNG)转换为PDF文件可以帮助我们更好地保存和分享图片。此外,PDF文件还具有强大的安全特性,将图片转换为PDF后,我们可以通过设置密码来文件内容不被泄露。本文将介绍如何将JPG/PNG图片转换为PDF文档。
C# 将单张图片转换为PDF文档
C# 将多张图片转换到一个PDF文档
此教程可以使用第三方免费库 Fre ...
cpu的虚拟化(上)———— 进程
前言
进程与操作系统的关系
进程初识
前言
这是一篇我在学习OSTEP这本书的笔记与总结,这篇笔记的正文部分围绕进程赞开,主要讨论“是什么”与“为什么”两个问题,笔记如有错漏,望不吝纠正。
进程与操作系统的关系
进程是操作系统里的核心之一,在OSTEP中对进程在操作系统中扮演的角色给出了以下解释:
进程是操作系 ...
cpu的虚拟化(下)———— 调度
前言
前两篇介绍了进程与上下文,而这篇介绍的对象是调度器,因为我也不懂调度器的原因,所以,这篇笔记只谈调度器的工作过程,不涉及调度器的具体实现。笔记中若有错漏,望不吝指正。
调度器的一天
在一个清凉的午后,job饭馆(CPU)来了一群气势汹汹的饿汉(进程),店小二(调度器)立马为这些不速之客安排饭桌,可难为 ...