net
-
C# 如何自定义模型验证 – DataAnnotations与IValidatableObject
C#自定义模型验证主要通过DataAnnotations特性与IValidatableObject接口配合实现:前者用于字段级简单规则(如非空、长度、格式),后者处理跨字段及业务逻辑强相关的复合校验(如时间顺序、密码一致性、服务依赖验证)。 在 C# 中实现自定义模型验证,主要靠 DataAnnot…
-
MAUI怎么读取NFC标签 MAUI NFC功能实现方法
MAUI读取NFC标签需分四步:平台配置、权限声明、插件集成、代码调用;iOS须配Info.plist中NFCReaderUsageDescription和com.apple.developer.nfc.readersession.formats,仅前台支持NDEF;Android需声明NFC权限并…
-
Dapper性能为什么这么快 Dapper性能原理深度解析
Dapper快的核心在于“没做什么”:无状态设计、零对象跟踪、静态方法调用、编译级映射缓存、参数化查询优化、连接与流控由开发者主导,专注SQL执行与对象映射。 Dapper快,核心不是“它做了什么”,而是“它没做什么”——它绕开了传统ORM里大量与业务无关的抽象、状态跟踪和运行时开销,把数据库访问压…
-
C#怎么使用GeneratedRegex C# 7正则表达式源生成器
GeneratedRegex 是 .NET 7 引入的正则表达式源生成器,编译时将字符串字面量转换为高效、类型安全的静态方法,避免运行时编译开销和反射,提升性能并增强 IDE 支持。 GeneratedRegex 是 .NET 7 引入的正则表达式源生成器(Source Generator),它在编…
-
C#如何使用gRPC通信 .NET gRPC服务创建与调用方法
.NET中使用gRPC通信需三步:定义一致的.proto协议文件、服务端注册Grpc并实现继承XXXBase的服务类、客户端用GrpcChannel创建强类型客户端调用;注意csharp_namespace匹配、HTTPS配置及.proto生成设置。 在.NET中使用gRPC通信,核心是定义协议(.…
-
C#怎么使用System.IO.Pipelines C#高性能IO管道库用法
System.IO.Pipelines 是 .NET Core 2.1+ 内置的高性能 IO 库,核心为 Pipe、PipeReader 和 PipeWriter,支持零拷贝、背压与异步流式处理,适用于 Kestrel 等高性能场景。 System.IO.Pipelines 是 .NET Core …
-
C#怎么比较两个对象是否相等 Equals和GetHashCode重写方法
必须同时重写Equals和GetHashCode,因为哈希容器依赖二者协同工作:相等对象的GetHashCode必须相同,Equals用于最终确认;若只重写Equals,可能导致字典中无法查找对象。 在C#中,判断两个对象是否“逻辑相等”,不能只靠 == 或默认的 Equals()——尤其是自定义类…
-
EF Core如何实现读写分离 EF Core读写分离架构方法
EF Core 本身不内置读写分离功能,需通过多 DbContext 实例、动态切换连接字符串或 AOP 拦截等方式实现,核心是写走主库、读走从库,并处理主从延迟与事务一致性问题。 EF Core 本身不内置读写分离功能,但可以通过配置多个 DbContext 实例、配合不同连接字符串(读库 / 写…
-
C#怎么进行图像处理 ImageSharp库使用方法
ImageSharp 是现代 .NET 图像处理首选库,安全无 GDI+ 依赖、支持异步与内存友好;通过 NuGet 安装主包及可选扩展,支持多格式加载/保存、链式变换(Resize/Crop/Rotate 等)、Mutate 原地操作、文字图形绘制,并需注意像素格式、using 释放与异步加载。 …
-
EF Core怎么在运行时应用迁移 EF Core context.Database.Migrate()方法
EF Core 的 context.Database.Migrate() 可在运行时自动应用待执行迁移,但需依赖 __EFMigrationsHistory 表、要求数据库可创建或已存在,且不支持回滚、生产环境慎用。 EF Core 的 context.Database.Migrate() 方法确实…