.net事件
2024/5/27 11:47:33

描述(做一个简单的记录): 事件(event)的本质是一个委托;(声明一个事件: public event TestDelegate eventTest)  委托(delegate)可以理解为一个符合某种签名的方法类型;比如:TestDelegate委托的返回数据类型为string,参数为 int和EventPara,而TestI方法的参数和返回类型和TestDelegate一致,则可以把TestI方法赋值给委托tI; 注册事件:我在构造函数的时候注册这个事件(eventTes

.NET中使用 openGauss C# ORM
2024/5/27 11:47:32

openGauss(GaussDB ) openGauss是一款全面友好开放,携手伙伴共同打造的企业级开源关系型数据库。openGauss采用木兰宽松许可证v2发行,提供面向多核架构的极致性能、全链路的业务、数据安全、基于AI的调优和高效运维的能力。openGauss深度融合华为在数据库领域多年的研发经验 连接字符串 用法和PGSQL一样 ,唯一区别 在连接字符串 后面加上No Reset On Close=truePT=5432DATABASE=SqlSugar4xTestHOST=localhos

WPF多语言支持:简单灵活的动态切换,让你的程序支持多国语言
2024/5/27 11:47:32

概述:本示例演示了在WPF应用程序中实现多语言支持的详细步骤。通过资源字典和数据绑定,以及使用语言管理器类,应用程序能够在运行时动态切换语言。这种方法使得多语言支持更加灵活,便于维护,同时提供清晰的代码结构。 在WPF中实现多语言的一种常见方法是使用资源字典和数据绑定。以下是一个详细的步骤和示例源代码,演示如何在WPF应用程序中实现动态切换语言。文末提供代码下载。 先看效果: 步骤 1: 准备资源文件 首先,为每种语言创建一个资源文件。资源文件的命名约定为Resources.{语言代码}.xaml。例如,

轻松使用Aspire rabbitmq framework
2024/5/27 11:47:32

轻松使用aspire rabbitmq 创作初衷 aspire 是微软基金会推出的新一代云原生编排框架,具体请看 https:learn.microsoft.comenusdotaspiregetstartedaspireoverview 我从preview1 preview6(目前最新 202451) 一直都有使用,在第一版的时候我就用它放入了我的一个微服务中(https:gitee.comSkyNingDuanPublicActivityServices.git),一直和它迭代. 在其中我一直使用外

Windows下绑定线程到指定的CPU核心
2024/5/27 11:47:31

在某些场景下,需要把程序绑定到指定CPU核心提高执行效率。通过微软官方文档查询到Windows提供了两个Win32函数:SetThreadAffinityMask和SetProcessAffinityMask 为指定线程和进程设置处理器关联掩码。通俗的讲就是在指定的CPU核心上执行线程或者进程。这里的CPU核心指的是逻辑核心,而非物理核心。SetThreadAffinityMask SetThreadAffinityMask用于设置指定线程的处理器关联掩码,从而实现线程对处理器的绑定。 SetThread

WPF中轻松生成动态图表:实例详解(MVVM模式)
2024/5/27 11:47:31

概述:本文代码示例演示了如何在WPF中使用Livets库创建动态条形图。通过创建数据模型、ViewModel和在XAML中使用`Cartesiant`控件,你可以轻松实现图表的数据绑定和动态更新。我将通过清晰的步骤指南包括详细的中文注释,帮助你快速理解并应用这一功能。 先上效果: 在WPF中使用Livets生成动态的条形图表需要以下步骤。以下是详细的实例源代码: 步骤 1: 引用Livets库 首先,在项目中引用Livets库。你可以通过NuGet包管理器来安装Livets.Wpf: InstallPac

.NET 中使用 GaussDB C# ORM
2024/5/27 11:47:31

openGauss(GaussDB ) openGauss是一款全面友好开放,携手伙伴共同打造的企业级开源关系型数据库。openGauss采用木兰宽松许可证v2发行,提供面向多核架构的极致性能、全链路的业务、数据安全、基于AI的调优和高效运维的能力。openGauss深度融合华为在数据库领域多年的研发经验 连接字符串 用法和PGSQL一样 ,唯一区别 在连接字符串 后面加上No Reset On Close=truePT=5432DATABASE=SqlSugar4xTestHOST=localhostP

C# 批量删除Excel中的重复行
2024/5/27 11:47:30

当从不同来源导入Excel数据时,可能存在重复的记录。为了确保数据的准确性,通常需要删除这些重复的行。手动查找并删除可能会非常耗费时间,而通过编程脚本则可以实现在短时间内处理大量数据。本文将提供一个使用C# 快速查找并删除Excel重复项的免费解决方案。 以下是实现步骤: 1. 首先安装免费. Excel 库 Free Spire.XLS f .。( 可通过Nuget直接安装或者下载后手动安装) 2. 导入命名空间。 3. 使用 LoadFromFile() 方法加载Excel文件。 4. 获取指定

自动化测试数据生成:Asp.Net Core单元测试利器AutoFixture详解
2024/5/27 11:47:29

引言 在我们之前的文章中介绍过使用Bogus生成模拟测试数据,今天来讲解一下功能更加强大自动生成测试数据的工具的库"AutoFixture"。 什么是AutoFixtureAutoFixture 是一个针对 . 的开源库,旨在最大程度地减少单元测试中的“安排(Arrange)”阶段,以提高可维护性。它的主要目标是让开发人员专注于被测试的内容,而不是如何设置测试场景,通过更容易地创建包含测试数据的对象图,从而实现这一目标。AutoFixture 可以帮助开发人员自动生成测试数据,减少手动设置测试数据的工作量

.NET Emit 入门教程:第七部分:实战项目1:将 DbDataReader 转实体
2024/5/27 11:47:29

前言: 经过前面几个部分学习,相信学过的同学已经能够掌握 . Emit 这种中间语言,并能使得它来编写一些应用,以提高程序的性能。 随着 IL 指令篇的结束,本系列也已经接近尾声,在这接近结束的最后,会提供几个可供直接使用的示例,以供大伙分析或使用在项目中。 M 实现的三个通用阶段: 第一阶段: 在以往新手入门写 M 实现的时候,往往会借助代码生成器,来针对整个数据库,生成一个一个的基础增删改查。 用代码生成器提前生成针对性的方法,运行效率高,但开发效率有可维护性低。 第二阶段: 随着对程序进一步的理解,

Elasticsearch 系列(六)- ES数据同步和ES集群
2024/5/27 11:47:27

本章将和大家分享ES的数据同步方案和ES集群相关知识。废话不多说,下面我们直接进入主题。 一、ES数据同步 1、数据同步问题 Elasticsearch中的酒店数据来自于mysql数据库,因此mysql数据发生改变时,Elasticsearch也必须跟着改变,这个就是Elasticsearch与mysql之间的数据同步。 在微服务中,负责酒店管理(操作mysql )的业务与负责酒店搜索(操作Elasticsearch )的业务可能在两个不同的微服务上,数据同步该如何实现呢? 2、数据同步方案一:同步调用3

dotnet C# 简单的追加文件夹到 ZipArchive 压缩文件的方法
2024/5/27 11:47:26

本文将告诉大家一个在 ZipArchive 里追加文件夹,以及添加过滤文件处理的压缩文件辅助方法实现的方法的代码如下 summary 追加文件夹到压缩文件里面 summary param name="archive"param param name="sourceDirectyName"param param name="zipRelativePath"在压缩包里面的相对路径param param name="compressionLevel"param param name="fileCanAddedP

一步步教你在 Windows 上构建 dotnet 系应用的 UOS 软件安装包
2024/5/27 11:47:25

本文将详细指导大家如何逐步为 dot 系列应用创建满足 UOS 统信系统软件安装包的要求。在这里,我们所说的 dot 系列应用是指那些能够在 Linux 平台上构建 UI 框架的应用,包括但不限于 CPF 应用、UNO 应用、Avalonia 应用等基于 dot 系的自发布自包含的能力,可以将 dot 系的应用进行发布为独立应用,无需框架依赖,如此即可执行 deb 包的二进制打包过程,从而很方便对接上 UOS 统信系统软件安装包的要求 整体步骤可以分为三个大步骤:步骤一:发布应用 步骤二:组织文件结构 步

分享一个在 dotnet 里使用 D2D 配合 AOT 开发小而美的应用开发经验
2024/5/27 11:47:24

本文将分享我在 dot 里面使用 Direct2D 配合 AOT 开发一个简单的测试应用的经验。这是我用不到 370 行代码,从零开始控制台创建 Win32 窗口,再挂上交换链,在窗口上使用 D2D 绘制界面内容,最后使用 AOT 方式发布的测试应用。成品文件体积不超过 10MB 且运行内存稳定在 60MB 以内,满帧率运行但 CPU 近乎不动此测试应用通过 Win32 裸窗口创建方式创建窗口且开启窗口消息循环。使用 Direct2D 进行界面绘制,可以比较方便绘制出复杂且绚丽的界面,整体使用类似于直接使

dotnet 简单方法在一个进程内同时跑起 WPF 和 ASP.NET Core 框架
2024/5/27 11:47:23

从设计架构上,无论是 WPF 还是 ASP. Ce 框架,都是在 dot 运行时上层的应用,两个框架处于平级的结构。理论上讲,两个平级的框架只要不存在特殊的情况,都是能够相容存在的。本文将和大家介绍一个非常简单的方法,在一个进程内同时跑起 WPF 和 ASP. Ce 框架在一个进程内同时跑起 WPF 和 ASP. Ce 框架在一些业务情况下还是一个不错的选择。比如以 ASP. Ce 框架为主,让 WPF 作为状态展示的界面。比如以 WPF 为主,让 ASP. Ce 框架充当应用对外接口,比如多应用之间的通

WPF 基础绘图 创建和加工图片
2024/5/27 11:47:22

本文将从控制台开始,告诉大家一个非常简单的 WPF 基础绘图方法,通过本文的方法可以调用 WPF 上层人类友好的方法,充分利用 GPU 资源,创建或加工图片,最终结果可以输出到本地文件,可支持编码出多种不同的图片格式本文仅用到 WPF 的多媒体渲染层,在 WPF 的这一层上的 API 是人类友好的,直接咱使用的是就是熟悉的 DrawingContext 类型。通过 DrawingContext 进行画线、画矩形、画几何、画图片、画文字,进行裁剪、变换、加特效等等,即可绘制出绚酷的界面效果。经由 Rende

Taurus.MVC 微服务框架 入门开发教程:项目集成:7、微服务间的调用方式(调整):引用程序集及代码下载(新增)
2024/5/27 11:47:19

前言: 今天补充一下 Taurus.MVC 微服务教程,介绍一下微服务中针对RPC方面调整或新增的功能。 之前系列文章目录: Taurus.MVC 微服务框架 入门开发教程:项目集成:1、服务端:注册中心、网关(提供可运行程序下载)。 Taurus.MVC 微服务框架 入门开发教程:项目集成:2、客户端:ASP. Ce(C#)项目集成:应用中心。 Taurus.MVC 微服务框架 入门开发教程:项目集成:3、客户端:其它编程语言项目集成:Java集成应用中心。 Taurus.MVC 微服务框架 入门开发教

UOS 开启 VisualStudio 远程调试 .NET 应用之旅
2024/5/27 11:47:17

本文记录的是在 Windows 系统里面,使用 VisualStudio 2022 远程调试运行在 UOS 里面 dot 应用的配置方法本文写于 2024.03.19 如果你阅读本文的时间距离本文编写的时间过于长,那本文可能包含过期的知识 我将以我的 UOS 虚拟机作为例子告诉大家如何在 Windows 系统里面,使用 VisualStudio 2022 远程调试运行在 UOS 里面 dot 应用。这里的 dot 应用不仅包含纯控制台即可实现的 ASP. Ce 也包括带 GUI 的程序,包括 CPF 、

dotnet 8 破坏性改动 在 AssemblyInformationalVersionAttribute 添加上 git 的 commit 号
2024/5/27 11:47:15

我在一个 WPF 项目里面,在界面显示应用的版本号,更新到 dot 8 的 SDK 之后,发现我的界面布局损坏了。本质上这个破坏性改动和 WPF 没有什么关系,是 dot 的 SDK 或编译器的破坏性变更,在 AssemblyInfmationalVersionAttribute 的 InfmationalVersion 属性里面写入了当前的 git 的 commit 提交号咱可以非常方便写出代码获取到当前应用的版本号信息,如下面代码,我新建了一个简单的 WPF 界面用来显示当前应用的版本号GridTex

安全机密管理:Asp.Net Core中的本地敏感数据保护技巧
2024/5/27 11:47:14

前言 在我们开发过程中基本上不可或缺的用到一些敏感机密数据,比如SQL服务器的连接串或者是OAuth2的Secret等,这些敏感数据在代码中是不太安全的,我们不应该在源代码中存储密码和其他的敏感数据,一种推荐的方式是通过Asp. Ce的机密管理器。 机密管理器在 ASP. Ce 中,机密管理器通常指的是一种工具或机制,用于安全地存储和管理应用程序中的敏感数据,如数据库连接字符串、API 密钥、密码等。这样的工具可以帮助开发人员有效地管理敏感信息,避免将其硬编码在代码中或与源代码一同提交到版本控制系统中,从

WPF 通过 GetMessageExtraInfo 方法获取当前收到的鼠标消息是否由触摸转换过来
2024/5/27 11:47:14

本文将告诉大家如何在 WPF 或者其他 Win32 应用里面,在收到鼠标消息时,通过 GetMessageExtraInfo 方法获取当前收到的鼠标消息是否由触摸消息提升而来大家都知道,在不开启 WM_Pointer 的情况下,无论是走 WM_Touch 或者是 RealTimeStylus 等方式,默认下触摸都会提升为鼠标消息从而更好兼容应用程序的逻辑 如果此时应用程序想要根据消息循环里面接收到的 Win32 消息判断一个鼠标消息的来源是否来自于触摸框触摸屏或者是 Pen 笔等,可以通过 GetMess

从依赖倒置原则到IOC控制反转实现
2024/5/27 11:47:13

从依赖倒置原则(Dependency Inversion Principle DIP)到控制反转(Inversion of Control IoC)再到依赖注入(Dependency Injection DI)的演进过程,我们可以理解为一种逐步抽象和解耦的设计思想。这种思想在C#等面向对象的编程语言中得到了广泛的应用。 首先,让我们回顾一下依赖倒置原则。这个原则建议我们:高层模块不应该依赖于低层模块,二者都应该依赖于抽象。 抽象不应该依赖于细节,细节应该依赖于抽象。这个原则鼓励我们设计代码时,让高层模块与

WPF控件:密码框绑定MVVM
2024/5/27 11:47:13

以下是一种使用 MVVM 模式的方法:首先,在 ViewModel 中添加一个属性来保存密码,我们可以使用 SecureString 类型。 密码变量private SecureString _passwd 密码属性,用于获取和设置密码public SecureString Passwd{get{return _passwd}set{ 如果新值与旧值不同if (_passwd != value){ 更新密码_passwd = value 触发属性更改通知,通知UI层密码已更改RaisePropertyCh

C#S7.NET实现西门子PLCDB块数据采集的完整步骤
2024/5/27 11:47:12

前言 本文介绍了如何使用S7.库实现对西门子PLC DB块数据的读写,记录了使用计算机仿真,模拟PLC,自至完成测试的详细流程,并重点介绍了在这个过程中的易错点,供参考。 用到的软件: 1.Windows环境下链路层网络访问的行业标准工具(WinPcap_4_1_3.exe)下载链接:https:www.winpcap.ginstallbinWinPcap_4_1_3.exe2.模拟西门子PLC的软件(SIMATIC_PLCSIM_Advanced_V3_Upd1.exe)下载链接:https:sup

Advanced .Net Debugging 7:托管堆与垃圾收集
2024/5/27 11:47:05

一、简介    这是我的《Advanced . Debugging》这个系列的第七篇文章。这篇文章的内容是原书的第二部分的【调试实战】的第五章,这一章主要讲的是从根本上认识托管堆和垃圾回收。软件系统的内存管理方式有两种,第一种是手动管理内存,这种方式容易产生一些问题产生,比如:悬空指针、重复释放,或者内存泄漏等;第二种是自动内存管理,比如:java 平台、. 平台。尽管 GC 能帮助开发人员简化开发工作,让他们更关注系统的业务功能实现。如果我们对 GC 运作原理了解更深入一些,也可以让我们避免在垃圾回收环

单元测试必备:Asp.Net Core代码覆盖率实战,打造可靠应用 !
2024/5/27 11:47:04

引言 在前几章我们深度讲解了单元测试和集成测试的基础知识,这一章我们来讲解一下代码覆盖率代码覆盖率是单元测试运行的度量值覆盖率通常以百分比表示,用于衡量代码被测试覆盖的程度,帮助开发人员评估测试用例的质量和代码的健壮性。常见的覆盖率包括语句覆盖率(Line Coverage)、分支覆盖率(Branch Coverage)、路径覆盖率(Path Coverage)等,不同类型的覆盖率可以帮助开发人员更全面地了解测试用例对代码的覆盖情况,从而改进测试策略和提高代码质量。 核心组件 本文介绍如何通过 Cover

ASP.NET Core Web API下基于Keycloak的多租户用户授权的实现
2024/5/27 11:47:03

在上文《Keycloak中授权的实现》中,以一个实际案例介绍了Keycloak中用户授权的设置方法。现在回顾一下这个案例:服务供应商(Service Provider)发布WeatherFecast API供外部访问 在企业应用(Client)里有三个用户:super,dax,nobody 在企业应用里有两个用户组:administrats,users 在企业应用里定义了两个用户角色:administrat,regular user super用户同时属于users和administrats组,dax属于

Dapr Outbox 执行流程
2024/5/27 11:47:03

Dapr Outbox 是1.12中的功能。 本文只介绍Dapr Outbox 执行流程,Dapr Outbox基本用法请阅读官方文档 。本文中appID=derprocess,topic=ders 本文前提知识:熟悉Dapr状态管理、Dapr发布订阅和Outbox 模式。 Outbox 模式的核心是在同一个数据库事务中保存业务数据和待发布的事件消息,再由某个“定时任务”读取待发布的事件消息并发布事件(并删除数据库中事件消息) 相关文章: .中实现Outbox模式的框架CAP,作者Savboard 使用

使用C# 创建、填写、删除PDF表单域
2024/5/27 11:47:02

通常情况下,PDF文件是不可编辑的,但PDF表单提供了一些可编辑区域,允许用户填写和提交信息。PDF表单通常用于收集信息、反馈或进行在线申请,是许多行业中数据收集和交换的重要工具。 PDF表单可以包含各种类型的输入控件,如文本框、复选框、下拉菜单、单选按钮等。本文将介绍如何使用C# 和一个免费.库来操作PDF表单,包括以下三个示例:创建PDF表单域 填写PDF表单域 删除PDF表单域安装免费. PDF库: Free Spire.PDF f . (可通过 NuGet安装,或下载后手动引用dll)PM Ins

StreamJsonRpc.ConnectionLostException 在请求完成之前, 与远程方的 JSON-RPC 连接已丢失
2024/5/27 11:47:02

今天电脑重启之后,发现 visual studio 2022 的智能提示与报错经常性不好用,不光不能在正常时候提示代码错误信息,甚至在编译过后也不提示错误。反复重启,刚开始正常,隔一会儿就会提示什么什么功能不可用,点开打开详情,提示:StreamJsonRpc.ConnectionLostException : 在请求完成之前 与远程方的 JSONRPC 连接已丢失。 之前也没有遇到过这个问题,网上找了很多解决方案,有说使用 devenv nosplash 的,也有说用 devenv ResetSetti