WPF/C#:BusinessLayerValidation
Busine LayerValidation介绍
Busine LayerValidation,即业务层验证,是指在软件应用程序的业务逻辑层(Busine Layer)中执行的验证过程。业务逻辑层是应用程序架构中的一个关键部分,负责处理与业务规则和逻辑相关的操作。业务层验证的主要目的是确保数据...[2024/6/26]
为什么不推荐使用Linq?
相信很多.NETer看了标题,都会忍不住好奇,点进来看看,并且顺便准备要喷作者!
这里,首先要申明一下,作者本人也非常喜欢Linq,也在各个项目中常用Linq。
我爱Linq,Linq优雅万岁!!!(PS:顺便吐槽一下,隔壁Java从8.0版本推出的Streams API,抄了个四不像,一点...[2024/6/26]
C# 13(.Net 9) 中的新特性 - 扩展类型C# 13(.Net 9) 中的新特性 - 扩展类型
C# 13 即 .Net 9 按照计划会在2024年11月发布,目前一些新特性已经定型,今天让我们来预览一个比较大型比较重要的新特性:
扩展类型 Extension types
在5月份的微软 Build 大会中的 What’s new in C# 13 会议上,两位大佬花了很长的篇幅来演示这...[2024/6/25]
C#如何创建一个可快速重复使用的项目模板
写在前面
其实很多公司或者资深的开发都有自己快速创建项目的脚手架的,有的是魔改代码生成器实现,有的直接基于T4,RazorEngine等模板引擎打造;但无论如何,其最终目的其实就是搭建一个自定义项目模板(脚手架)。
今天我们聊聊:如何基于官方的cli donet new 命令创建自己的项目模板...[2024/6/25]
C#.Net筑基-集合知识全解
01、集合基础知识
.Net 中提供了一系列的管理对象集合的类型,数组、可变列表、字典等。从类型安全上集合分为两类,泛型集合 和 非泛型集合,传统的非泛型集合存储为Object,需要类型转。而泛型集合提供了更好的性能、编译时类型安全,推荐使用。
.Net中集合主要集中在下面几个命名空间中:...[2024/6/25]
WPF/C#:如何将数据分组显示
WPF Samples中的示例
在WPF Samples中有一个关于Grouping的Demo。
该Demo结构如下:
MainWindow.xaml如下:
<Window x:Cla ="Grouping.MainWindow"
xmlns="http: che...[2024/6/19]
如何使用csproj构建C#源代码组件NuGet包?
一般我们构建传统的NuGet包,都是打包和分发dll程序集文件。
至于打包和分发C#源代码文件的做法,比较少见。
那么这种打包源代码文件的做法,有什么优点和缺点呢?
优点:
方便阅读源代码。
方便断点调试。
减少 A embly 程序集模块加载个数。
更利于发布期间的剪裁(Publish...[2024/6/19]
WPF/C#:显示分组数据的两种方式
前言
本文介绍自己在遇到WPF对数据进行分组显示的需求时,可以选择的两种方案。一种方案基于ICollectionView,另一种方案基于IGrouping。
基于ICollectionView实现
相关cs代码:
[ObservableProperty]
private Observable...[2024/6/19]
C# 语言在AGI 赛道上能做什么
自从2022年11月OpenAI正式对外发布ChatGPT依赖,AGI 这条赛道上就挤满了重量级的选手,各大头部公司纷纷下场布局。原本就在机器学习、深度学习领域占据No.1的Python语言更是继续稳固了自己AI一哥的位置。凭借着Microsoft 和 OpenAI 长期以来一直是紧密相连的合作...[2024/6/19]
C#/.NET/.NET Core拾遗补漏合集(24年6月更新)C#/.NET/.NET Core拾遗补漏合集(24年6月更新)
前言
在这个快速发展的技术世界中,时常会有一些重要的知识点、信息或细节被忽略或遗漏。《C#/.NET/.NET Core拾遗补漏》专栏我们将探讨一些可能被忽略或遗漏的重要知识点、信息或细节,以帮助大家更全面地了解这些技术栈的特性和发展方向。
欢迎加入DotNetGuide技...[2024/6/17]
分布式事务解决方案汇总
2阶段(2PC)提交方案:
实现原理:基于XA规范搞的一套分布式事务的理论,也可以叫做一套规范,或者是协议。
(1)准备阶段(Prepare phase):事务管理器给每个参与者发送prepare消息,每个数据库参与者在本地执行事务,并写本地的Undo/Redo,此时事...[2024/6/13]
使用Blazor WebAssembly整合PocketBase的基础项目模板
使用Blazor WebA embly整合PocketBase的基础项目模板
在这篇博客文章中,我们将探讨如何创建一个集成PocketBase的基础Blazor WebA embly项目。我们将涵盖用户身份验证、注册和密码找回功能。我们的项目使用PocketBaseClient,这是一个动态生成...[2024/6/13]
发现XWPFDocument写入Word文档时的小BUG:两天的探索与解决之旅
引言
最近在使用XWPFDocument生成Word文档时,遇到一个错误:“未将对象引用设置到对象的实例”。这个平常很容易找到原因的问题却困扰了我两天,最终发现问题出在设置段落时赋值了空值。本文将详细记录这个问题的原因及解决方法,希望能对遇到相同问题的开发者有所帮助。
第一天:问题的发现
...[2024/6/13]
WPF/C#:程序关闭的三种模式WPF/C#:程序关闭的三种模式
ShutdownMode枚举类型介绍
ShutdownMode是一个枚举类型,它定义了WPF应用程序的关闭方式。这个枚举类型有三个成员:
OnLastWindowClose:当最后一个窗口关闭或者调用System.Windows.Application.Shutdown方法时,应用程序会关闭。...[2024/6/12]
C# .NET 6 使用WorkFlow Core 创建工作审批流
1,背景
工作流思想在上世纪60年代就有人提出过;70年代就有人开始尝试,但是由于当时许多的限制,工作流一直没有成功的被实现;80年代才出现第一批成功的工作流系统;90年代工作流技术走向了第一个发展高峰期;90年代后至今工作流出现了很多版本,但是主旨还是不变的,为了使我们的工作变得更加高效。...[2024/6/11]
C#/.NET/.NET Core优秀项目和框架2024年5月简报
前言
公众号每月定期推广和分享的C#/.NET/.NET Core优秀项目和框架(每周至少会推荐两个优秀的项目和框架当然节假日除外),公众号推文中有项目和框架的介绍、功能特点、使用方式以及部分功能截图等(打不开或者打开GitHub很慢的同学可以优先查看公众号推文,文末一定会附带项目和框架源码...[2024/6/11]
C#.Net筑基-String字符串超全总结 [深度好文]
字符串是日常编码中最常用的引用类型了,可能没有之一,加上字符串的不可变性、驻留性,很容易产生性能问题,因此必须全面了解一下。
01、字符与字符编码
1.1、字符Char
字符 char 表示为 Unicode字符,在C#中用 UTF-16 编码表示,占用2个字节(16位)大小,字面量用单...[2024/6/11]
Semantic Kernel入门系列:通过依赖注入管理对象和插件
前言
本章讲一下在Semantic Kernel中使用DependencyInject(依赖注入),在之前的章节我们都是通过手动创建Kernel对象来完成框架的初始化工作,今天我们用依赖注入的方式来实现。
实战
定义Native Plugins
我们用官网的LightPlugins插件来演示依...[2024/6/11]
C#开发的目录图标更改器 - 开源研究系列文章 - 个人小作品C#开发的目录图标更改器 - 开源研究系列文章 - 个人小作品
因为有一些项目保存在文件夹里,然后想着用不同的图标来显示该文件夹,但是Windows提供的那个修改文件夹的操作太麻烦,需要的操作太多(文件夹里鼠标右键,属性,自定义,更改图标,选择文件,选择图标,点击确定),于是就想自己用...[2024/6/11]
C#开源实用的工具类库,集成超过1000多种扩展方法C#开源实用的工具类库,集成超过1000多种扩展方法
前言
今天大姚给大家分享一个C#开源(MIT License)、免费、实用且强大的工具类库,集成超过1000多种扩展方法增强 .NET Framework 和 .NET Core的使用效率:Z.ExtensionMethods。
直接项目引入类库使用
在你的对应项目中NuGet包管理器中搜索:...[2024/6/5]
.NET C# 程序自动更新组件
引言
本来博主想偷懒使用AutoUpdater.NET组件,但由于博主项目有些特殊性和它的功能过于多,于是博主自己实现一个轻量级独立自动更新组件,可稍作修改集成到大家自己项目中,比如:WPF/Winform/Windows服务。大致思路:发现更新后,从网络上下载更新包并进行解压,同时在 WinF...[2024/6/5]
基于WebSocket的modbus通信(三)- websocket和串口基于WebSocket的modbus通信(三)- websocket和串口
WebSocket传递ModbusTCP数据包
错误纠正
上一篇还有个错误,就是客户端写数据时服务端不需要响应,但我的服务端响应了的。我选择改客户端,把写数据时接收到的响应丢弃。
PrintBytes(ADUMe age.Serialze(request), "请求");
if (Clie...[2024/6/3]
C#.Net筑基-深入解密小数内部存储的秘密
为什么0.1 + 0.2 不等于 0.3?为什么16777216f 等于 16777217f?为什么金钱计算都推荐用decimal?本文主要学习了解一下数字背后不为人知的存储秘密。
01、数值类型
C#中的数字类型主要包含两类,整数、小数,C#中的小数都为浮点(小)数。
void ...[2024/6/3]
基于WebSocket的modbus通信(一)- 客户端
上一篇已经实现了ModbusTcp服务器和8个主要的功能码,只是还没有实现错误处理功能。
但是在测试客户端时却发现了上一篇的一个错误,那就是写数据成功,服务器不需要响应。
接下来要做的就是实现ModbusTcp客户端。有了清晰的协议,代码循规蹈矩的写就行了。
效果
原始数据
其中只读...[2024/6/1]
基于WebSocket的modbus通信(一)- 服务器
ModbusTcp协议是基于tcp的,但不是说一定要通过tcp协议才能传输,只要能传输二进制的地方都可以。比如WebSocket协议。
但由于目前我只有tcp上面的modbus服务器实现,所以我必须先用tcp连接借助已有工具来验证我的服务器是否写正确。
效果
ModBusTCP协议报文...[2024/5/31]
C#中接口的显式实现与隐式实现及其相关应用案例
C#中接口的显式实现与隐式实现
最近在学习演化一款游戏项目框架时候,框架作者巧妙使用接口中方法的显式实现来变相对接口中方法进行“密封”,增加实现接口的类访问方法的“成本”。
接口的显式实现和隐式实现:
先定义一个接口,接口中有这两个方法。
public interface ICanSing...[2024/5/31]
公众号5月C#/.NET热文一览
C#/.NET/.NET Core全面的学习、工作、面试指南知识库
转眼之间维护DotNetGuide(C#/.NET/.NET Core学习、工作、面试指南知识库)已经持续超过了三年多的时间,Commit提交数也超过900+,在前几天GitHub也突破了5k+ Star并且荣获GitHub C...[2024/5/29]
C#开发的应用升级更新服务器端工具 - 开源研究系列文章 - 个人小作品
笔者开发过一些小应用,然后这些应用就需要有升级更新的功能,但是如果每个都集成进去也行,但是就是得写死更新的代码了。于是就想写一个应用升级更新的管理器,以前看到过Github上有一个AutoUpdate.Net,不过它那个要...[2024/5/29]
C#的奇技淫巧:利用WinRM来远程操控其他服务器上的进程C#的奇技淫巧:利用WinRM来远程操控其他服务器上的进程
前言:有时候远程服务器的进程你想偷偷去围观一下有哪些,或者对一些比较调皮的进程进行封杀,或者对一些自己研发的服务进行远程手动启动或者重启等,又不想打开远程桌面,只想悄咪咪地执行,那也许下面的文章会对你有启发。
前提条件
确保远程服务器(服务端)已启用WinRM。在远程服务器上运行以...[2024/5/27]
C#应用的用户配置窗体方案 - 开源研究系列文章C#应用的用户配置窗体方案 - 开源研究系列文章
这次继续整理以前的代码。本着软件模块化的原理,这次笔者对软件中的用户配置窗体进行剥离出来,单独的放在一个Dll类库里进行操作,这样在其它应用程序里也能够快速的复用该类库,达到了快速开发软件的效果。
...[2024/5/24]
C#.Net筑基-类型系统②常见类型C#.Net筑基-类型系统②常见类型
01、结构体类型Struct
结构体 struct 是一种用户自定义的值类型,常用于定义一些简单(轻量)的数据结构。对于一些局部使用的数据结构,优先使用结构体,效率要高很多。
可以有构造函数,也可以没有。因此初始化时可以new,也可以用默认default。但当给字段设置了初始值时,则必须有...[2024/5/24]
基于webapi的websocket聊天室(番外二)基于webapi的websocket聊天室(番外二)
我比较好奇的是webapi服务器怎么处理http请求和websocket请求。有了上一篇番外的研究,这里就可以试着自己写个非常简易的webapi服务器来接收这两种请求。
效果
http请求
消息打印
响应解析
websocket请求
消息打印
使用聊天室测试
...[2024/5/24]
一款基于C#开发的通讯调试工具(支持Modbus RTU、MQTT调试)
前言
今天大姚给大家分享一款基于C#、WPF、Prism、MaterialDesign、HandyControl开发的通讯调试工具(支持Modbus RTU、MQTT调试,界面色彩丰富):Wu.CommTool。
工具特点
工具界面色彩丰富。
支持Modbus RTU、MQTT服务器、MQTT...[2024/5/22]
C#特性
目录C#特性1. 概括2. 语法定义特性类应用特性获取特性3. 应用场景数据验证序列化和反序列化描述性元数据依赖注入单元测试权限控制AOP(面向切面编程)总结引用
C#特性
1. 概括
C#中的特性是一种用于向代码元素添加元数据的机制。它们允许程序员在代码中添加额外的信息,以影响程序的行为...[2024/5/21]
efcore如何优雅的实现按年分库按月分表
efcore如何优雅的实现按年分库按月分表
介绍
本文ShardinfCore版本
本期主角:
ShardingCore 一款ef-core下高性能、轻量级针对分表分库读写分离的解决方案,具有零依赖、零学习成本、零业务代码入侵适配
距离上次发文.net相关的已经有很久了,期间一直在从事j...[2024/5/21]
Clear Code for Minimal API
我在写MinimalAPI的时候,发现不能最清晰的看到每个API,原因就是:WebAPI中不断增长逻辑处理过程
于是我在想如何简化API至一行,在一点一点想办法中,发现了简化DotNET Minimal API的方式。特此记录下来这个思路给需要帮助的人。我的灵感来源于 C# 11 功能 - 接...[2024/5/21]
C#.Net筑基-类型系统①基础
C#.Net的BCL提供了丰富的类型,最基础的是值类型、引用类型,而他们的共同(隐私)祖先是 System.Object(万物之源),所以任何类型都可以转换为Object。
01、数据类型汇总
C#.NET 类型结构总结如下图,Object是万物之源。最常用的就是值类型、引用类型,指针是...[2024/5/21]
C#泛型C#泛型
[TOC]
# C#泛型 ## 概述 ### 什么是泛型? > 泛型是C#2.0中推出的新语法,泛型不是语法糖,而且由框架升级提供的功能。 泛型(Generics)是一种编程范式,它允许您编写可与任何数据类型一起工作的代码。泛型通过使用类型参数来实现这一点,类型参数是在创建泛型类型或方法...[2024/5/15]
C#应用的欢迎界面窗体方案 - 开源研究系列文章
这次整理以前的代码,然后想到了应用的欢迎界面窗体的问题。这个例子是在应用中启动一个线程来进行显示欢迎窗体的,对于应用的启动无影响,与其他人的源码不相同,欢迎读者进行复用此类库。
&nb...[2024/5/15]
C#.Net筑基-模式匹配汇总C#.Net筑基-模式匹配汇总
01、模式匹配概述
从C#7开始支持的 模式匹配 语法(糖,挺甜),可非常灵活的对数据进行条件匹配和提取,经过多个版本的完善,已经非常强大了。
C# 支持多种模式,包括声明、类型、常量、关系、属性、列表、var 和弃元等,在is、switch语句、switch表达式中使用,还可以使用布尔逻...[2024/5/15]
使用c#强大的表达式树实现对象的深克隆之解决循环引用的问题
在上一期博客里,我们提到使用使用c#强大的表达式树实现对象的深克隆,文章地址:https: www.cnblogs.com/gmmy/p/18186750。但是文章里没有解决如何实现循环引用的问题。
循环引用
在C#中,循环引用通常发生在两个或更多的对象相互持有对方的引用,从而形成一个闭环。...[2024/5/15]
自己动手实现一个轻量无负担的任务调度ScheduleTask
至于任务调度这个基础功能,重要性不言而喻,大多数业务系统都会用到,世面上有很多成熟的三方库比如Quartz,Hangfire,Coravel
这里我们不讨论三方的库如何使用 而是从0开始自己制作一个简易的任务调度
技术栈用到了:BackgroundService和NCrontab库
第一步...[2024/5/15]
C#实现图片转Base64字符串.并支持markdown文件打开展示
引用1.0.3版本或以上的Wesky.Net.OpenTools 包
1.0.3 版本提供图片转Base64字符串方案,并提供根据后缀名自动识别Mime类型,合成标准URI
开源项目地址:
Gitee:https: gitee.com/dreamer_j/open-tools.git G...[2024/5/13]
【OpenVINO?】在 C# 中使用OpenVINO? 部署PP-YOLOE实现物体检测
?前言
OpenVINO? C# API 是一个 OpenVINO? 的 .Net wrapper,应用最新的 OpenVINO? 库开发,通过 OpenVINO? C API 实现 .Net 对 OpenVINO? Runtime 调用,使用习惯与 OpenVINO? C++ API 一...[2024/5/13]
ABP-VNext 用户权限管理系统实战06---实体的创建标准及迁移
在apb-vnext的实体的创建中可以确实字段的长度、说明、对应的表、表中给字段加的索引
以项目中的订单表为例,如下:
[Comment("订单主表")]
[Table("t_voucher_order")] [Index(nameof(VoucherCode))]
pu...[2024/5/13]
C#的关于窗体的类库方案 - 开源研究系列文章
这次想到了以前编写的关于应用的那个类库,不过当时的只是定义了显示接口,然后调用窗体显示。现在想到要把这个关于窗体的类库进行集合,统一调用,于是就把原来的代码进行了修改完善,终于得到了这次这个例子。
...[2024/5/13]
使用c#强大的表达式树实现对象的深克隆
一、表达式树的基本概念
表达式树是一个以树状结构表示的表达式,其中每个节点都代表表达式的一部分。例如,一个算术表达式 a + b 可以被表示为一个树,其中根节点是加法运算符,它的两个子节点分别是 a 和 b。在 LINQ(语言集成查询)中,表达式树使得能够将 C# 中的查询转换成其他形式的查询,...[2024/5/13]
C# 实现Ping远程主机功能C# 实现Ping远程主机功能
C#实现Ping远程主机功能。
1、引用nuget包 Wesky.Net.OpenTools
OpenTools是一个用于提高开发效率的开源工具库。该项目为个人开源项目,采用MIT开源协议,永不更改协议。开源项目地址:
Gitee:https: gitee.com/drea...[2024/5/13]
WPF 稳定的全屏化窗口方法
本文来告诉大家在 WPF 中,设置窗口全屏化的一个稳定的设置方法。在设置窗口全屏的时候,经常遇到的问题就是应用程序虽然设置最大化加无边框,但是此方式经常会有任务栏冒出来,或者说窗口没有贴屏幕的边。本文的方法是基于 Win32 的,由 lsj 提供的方法,当前已在 1000 多万台设备上稳定运行超...[2024/5/13]
C#.Net筑基-基础知识C#.Net筑基-基础知识
01、C#基础概念
1.1、C#简介
C# (读作C Sharp)是由微软公司开发的一种面向对象、类型安全、高效且简单的编程语言,最初于 2000 年发布,并随后成为 .NET 框架的一部分。所以学习C#语言的同时,也是需要同步学习.NET框架的,不过要要注意C#与.NET的对应版本。
...[2024/5/11]