Csharp学习Linq
2024/5/27 11:45:03

Linq的学习 这里继续使用之前文章创建的学生类,首先简单介绍一下linq的使用。 Student.cspublic class Student{public int Id { get set }public int ClassId { get set }public string Name { get set }public int Age { get set }public string Deion { get set }public void Study(){Console.WriteLine($"

WinForm】使用Costura.Fody打包编译成可独立运行的桌面程序
2024/5/27 11:45:02

新建项目在建项目的时候要注意,选择Windows 窗体应用(. Framewk)或者wpf项目,然后打开安装包在解决方案资源管理器中,选择刚才的项目名,鼠标右键找到并打开管理NuGet包,然后在浏览选项卡里,输入一个Costura.Fody并查找,有就点安装,安装前需要注意选择支持的对应版本和依赖项静态编译接下来,重新编译项目,如果没报错,项目里会出现一个隐藏的文件FodyWeavers.xml,这样就是可以了,这是Costura的配置文件,参考官方的文档修改吧,能按自己设置的条件编译程序,一般情况下不用

.Net依赖注入神器Scrutor(上)
2024/5/27 11:45:02

前言 从. Ce 开始,. 平台内置了一个轻量易用的 IOC 的框架,供我们在应用程序中使用,社区内还有很多强大的第三方的依赖注入框架如:Autofac DryIOC Grace LightInject Lamar Stashbox Simple Inject内置的依赖注入容器基本可以满足大多数应用的需求,除非你需要的特定功能不受它支持否则不建议使用第三方的容器。 我们今天介绍的主角Scrut是内置依赖注入的一个强大的扩展,Scrut有两个核心的功能:一是程序集的批量注入 Scanning,二是 Deca

掌握C#中的GUI多线程技巧:WinForms和WPF实例详解
2024/5/27 11:45:01

概述:本指南详细解释了在C#中如何在创建控件的线程以外的线程中访问GUI。基础功能使用`Control.Invoke`(WinFms)或`Dispatcher.Invoke`(WPF),高级功能则利用`SynchronizationContext`实现线程间通信,确保代码清晰可读。 在C#中,要在创建控件的线程以外的线程访问控件,可以使用Control.Invoke(WinFms)或Dispatcher.Invoke(WPF)。以下是详细的步骤和示例代码,包括基础功能和高级功能。 在WinFms中访问控件

.Net Core 使用 TagProvider 与 Enricher 丰富日志
2024/5/27 11:45:01

TagProvider [LogProperties] 与 [LogPropertyIgne] 如果用在DTO不存在任何问题,如果用在Domain实体上,可能有点混乱。 您可能不希望因日志记录问题而使您的域模型变得混乱。对于这种情况,可以使用[TagProvider]属性来丰富日志。 我们仍然使用前面用的wk实体,这次它不再使用[LogPropertyIgne]属性:public class WkInfo {public string IPAddress { get set }public int Pt

借助HttpWebRequest 调用第三方接口,获取Token和数据
2024/5/27 11:45:00

在一次项目中,在给客户做系统时,需要调用客户的系统获取数据,客户提供了获取Token和获取数据的接口,用户名和密码,认证方式是基于Bearer的,通过学习和找资料,提供一个C#示例 一个C#示例 1、传入语句获取数据 summary 传入语句获取数据 summary param name="param"param returnsreturnspublic async Taskstring ThirdSystemDataPostAsync(string paramstring dataUrlAddress)

搞懂.NET应用程序管理员权限:三种简单方法一网打尽
2024/5/27 11:45:00

概述:.应用程序以管理员身份运行的方法包括修改清单文件、项目文件,或在运行时动态请求管理员权限。清单文件和项目文件通过声明UAC请求,而动态请求管理员权限则在程序启动时检查并重新启动。选择适当的方法取决于项目需求和配置。 在.应用程序中强制以管理员身份运行,可以通过清单文件、项目文件或者在程序运行时动态请求管理员权限。下面详细讲解这三种方法的基础功能: 方法一:清单文件(.exe.manifest) 步骤:创建.应用程序: 创建一个.应用程序。 修改清单文件: 添加UAC请求到清单文件。示例源代码: 在你

.NET集成DeveloperSharp操作Sql Server数据库
2024/5/27 11:44:59

支持.. Ce. Framewk,可以部署在Docker Windows Linux Mac。本文提供了一种结合“原生Sql+轻量级M”操作各类数据库的工具。 该工具几乎只使用了一个方法函数,却实现了几乎所有的数据操作功能。它已成功应用到了人工智能、产业互联网、智慧医疗、等多个大型项目上。 此工具在IDataAccess接口中提供。 IDataAccess所在的命名空间是:DeveloperSharp.Framewk.QueryEngine(需从NuGet引用DeveloperSharp包) 它主要

CYQ.Data 操作 Json 性能测试:对比 Newtonsoft.Json
2024/5/27 11:44:59

前言: 在 CYQ.Data 版本更新的这么多年,中间过程的版本都在完善各种功能。 基于需要支持或兼容的代码越多,很多时候,常规思维,都把相关功能完成,就结束了。 实现过程中,无法避免的会用到大量的反射、锁等对性能有所影响的逻辑代码。 CYQ.Data 从V5.9 版本开始,开始大规模的优化调整代码,目前稳定在 V5.9.2.7 版本,下面看一下更新记录 版本更新记录:794:新增:FireBird 数据库支持:增删改查与分页。(20231218)【V5.9.0.0 V5.9.0.2】 795:新增:D

static关键字---"工具类"
2024/5/27 11:44:58

using System using System.Collections.Generic using System.IO using System.Linq using System.Text using System.Windows.Fmsnamespace OOP {public class OOPdemo{ static关键字 作用:可以修饰成员变量,修饰成员方法 需求:同一个类生成的对象们,共享此方法,一处修改,处处感知 规则: 1.类名.变量名; 2.类名.方法名()

实用指南:C#中优雅更新GUI的基础和高级技巧(WinForms和WPF)
2024/5/27 11:44:58

概述:以上内容详细介绍了在C#中如何从另一个线程更新GUI,包括基础功能和高级功能。对于WinFms,使用`Control.Invoke`;对于WPF,使用`Dispatcher.Invoke`。高级功能使用`SynchronizationContext`实现线程间通信,确保清晰、可读性高的代码。 在C#中,从另一个线程更新GUI通常需要使用UI线程的同步上下文(SynchronizationContext)或者专门用于在UI线程执行操作的方法(Control.Invoke或Dispatcher.Invo

使用 LogProperties source generator 丰富日志
2024/5/27 11:44:58

Nuget包 Microsoft.Extensions.Telemetry.Abstractions 包含的新的日志记录source generat,它支持使用[LogProperties]将整个对象作为State与日志一起记录。 我将展示一种方法来控制如何使用[LogProperties]对象自动丰富日志。 示例 您可以使用日志source generat创建一个如下所示的方法,并使用[LoggerMessage]属性对其进行装饰:public static partial class Log {[Lo

发布 VectorTraits v2.0(支持 x86的Sse系列指令集等)
2024/5/27 11:44:57

目录支持 x86的Sse系列指令集为 Vect128Vect256 补充全部的向量方法提供CPU型号信息结果范例1: X86 CPU on Windows结果范例2: Arm CPU on Linux结果范例3: Arm CPU on Mac OS提供所支持的指令集信息结果范例1: X86 CPU on Windows结果范例2: Arm CPU on Linux结果范例3: Arm CPU on Mac OS新增了向量方法位运算的向量方法浮点数判断的向量方法符号判断的向量方法限制的向量方法比较的向量方法

.NET Core使用 CancellationToken 取消API请求
2024/5/27 11:44:55

您是否曾经访问过一个网站,它需要很长时间加载,最终你敲击 F5 重新加载页面。 即使用户刷新了浏览器取消了原始请求,而对于服务器来说,API也不会知道它正在计算的值将在结束时被丢弃,刷新五次,服务器将触发 5 个请求。 为了解决这个问题,ASP. Ce 为 Web 服务器提供了一种机制,就是CancellationToken. 用户取消请求时,你可以使用HttpContext.RequestAbted访问,您也可以使用依赖注入将其自动注入到您的操作中。 长时间运行的任务请求 现在我们假设您有一个 A

Elasticsearch 系列(四)- DSL实现自动补全查询
2024/5/27 11:44:55

本章将和大家分享如何通过 Elasticsearch 实现自动补全查询功能。 一、自动补全安装拼音分词器 1、自动补全需求说明 当用户在搜索框输入字符时,我们应该提示出与该字符有关的搜索项,如图:2、使用拼音分词 要实现根据字母做补全,就必须对文档按照拼音分词。在 GitHub 上恰好有 Elasticsearch 的拼音分词插件。地址:https:github.cominfinilabsanalysispinyin 安装方式与IK分词器一样,分三步: 1)解压 2)上传到 Elasticsearch 的

gRPC入门学习之旅(二)
2024/5/27 11:44:54

gRPC入门学习之旅(一) gRPC是一个高性能、通用的开源远程过程调用(RPC)框架,基于底层HTTP2协议标准和协议层Protobuf序列化协议开发,支持众多的开发语言,由Google开源。 gRPC也是基于以下理念:定义一个服务,指定其能够被远程调用的方法(包含参数和返回类型)。在服务端实现这个接口,并运行一个 gRPC服务器来处理客户端调用。在客户端拥有一个存根能够像服务端一样的方法。 gRPC 客户端和服务端可以在多种环境中运行和交互。你可以用Java创建一个 g

打造真实感十足的速度表盘:WPF实现动态效果与刻度绘制
2024/5/27 11:44:53

概述:这个WPF项目通过XAML绘制汽车动态速度表盘,实现了0300的速度刻度,包括数字、指针,并通过定时器模拟速度变化,展示了动态效果。详细实现包括界面设计、刻度绘制、指针角度计算等,通过C#代码与XAML文件结合完成。新建 WPF 项目: 在 Visual Studio 中创建一个新的 WPF 项目。 设计界面: 使用 XAML 设计速度表的界面。你可以使用 Canvas 控件来绘制表盘、刻度、指针等。确保设置好布局和样式。Window x:Class="YourNamespace.MainWindo

WPF中轻松操控GIF动画:WpfAnimatedGif库详解
2024/5/27 11:44:53

概述:在WPF中使用`WpfAnimatedGif`库展示GIF动画,首先确保安装了该库。通过XAML设置Image控件,指定GIF路径,然后在代码中使用库提供的方法实现动画控制。这简化了在WPF应用中处理GIF图的过程,提供了方便的接口来管理动画播放和暂停。 当使用 WpfAnimatedGif 库在 WPF 中显示 GIF 图动画时,首先需要确保已经安装了该库。你可以通过 NuGet 包管理器或在项目文件中手动添加引用来安装。 以下是详细的步骤和示例源代码: 步骤 1: 安装 WpfAnimatedG

WPF线程模型
2024/5/27 11:44:52

1. 渲染系统概述 WPF 采用保留模式渲染系统 (Retained Mode Rendering System),该系统可分为 UI 线程和复合线程两个主要部分,两者协作完成 WPF 应用程序的渲染工作。 1.1 立即模式GUI和保持模式GUI 图形 API 可分为保留模式API 和即时模式API。 Direct2D 是一种即时模式 API。 WPF 是保留模式 API 的一个示例。 1.1.1. 立即模式GUI 保留模式 API 是声明性的。 应用程序从图形基元(如形状和线条)构造场景。 图形库将场景

内网穿透,远程网盘,网站外挂资源,可嵌入到页面的网盘资源解决方案
2024/5/27 11:44:52

这是一个我个人写的库,主要实现的是基于tcpclient的网站外扩网盘的解决方案,可以使用家用网络外挂个人电脑中的资源到自己的网站上,已经上传nuget,大家可以直接在nuget包管理中搜索到,直接搜索ZmjDisk即可,下面介绍具体的使用方式: 另外一提这个库做的比较的个人化,因为他就是为了我的网站而服务的,我的网站是ste.zhaimaojun.cn,大家可以去体验一下实际的效果,也可以搜索微信小程序 什邡市宅猫君网络工作室,我做了网页版和小程序版,都是基于这个库。未来有空我可以再升级一下,改成更加泛

.Net Core 你必须知道的source-generators
2024/5/27 11:44:52

源生成器是 C# 9 中引入的一项功能,允许在编译过程中动态生成代码。 它们直接与 C# 编译器集成(Roslyn)并在编译时运行,分析源代码并根据分析结果生成附加代码。 源生成器提供了一种简化的自动化代码生成方法,无需外部工具或单独的预编译步骤。 通过无缝集成到编译过程中,源生成器可以提高生产力、减少错误并实现更高效的开发工作流程。 如何使用 创建 . 控制台应用程序。 此示例使用 . 6。将 Program 类替换为以下代码。 namespace ConsoleApppartial class

告别繁琐!1分钟带你构建RabbitMQ消息应用
2024/5/27 11:44:51

支持.. Ce. Framewk,可以部署在Docker Windows Linux Mac。 RabbitMQ作为一款主流的消息队列工具早已广受欢迎。相比于其它的MQ工具,RabbitMQ支持的语言更多、功能更完善。 1.发送消息、获取消息、使用消息 本文提供一种市面上最极简单的使用RabbitMQ的方式,只需要会调用以下三个方法,你就几乎可以掌握整个RabbitMQ的使用: (1) SendMessage,发送一个消息 (2) GetMessage,获取一个消息 (3) Use

超轻量级的c#版基于文件的日志记录工具,可定制输出格式,可指定日志文件
2024/5/27 11:44:51

这是我自己个人编写的日志记录,主要使用在只需要记录日志,偶尔到文件中查看一下日志记录的情况。我自己写的一些服务之类的是使用了这个的,代码很少,使用很简单。 第一步 搜索和安装我的Nuget包 搜索和安装zmjtool这个包,我写的,如下图:第二步 引入namespace和创建logger对象1 引入命名空间 2 using ZmjTool 3 4 创建对象和使用log功能 5 var log = DefaultFileLogger.Create("你的日志文件路径") 6 log.LogMessage(

轻量级.net standard微信支付登录Nuget开源库
2024/5/27 11:44:51

我个人编写的库,在我个人网站,小程序等很多地方都在使用中,大家可以搜索小程序 什邡市宅猫君网络工作室 或者到我的网站 ste.zhaimaojun.cn 去体验支付和登录效果。 本库主要实现了native pay(二维码支付)jsapi pay(小程序直接调起支付),需要注意的是这是基于api3的,非api2。 以下演示如何使用: 第一步 搜索安装ZmjWxApi 打开nuget,直接搜索和安装ZmjWxApi,如下图:第二步 引入namespace和创建支付对象1 引入命名空间 2 using ZmjW

LoggerMessageAttribute 高性能的日志记录
2024/5/27 11:44:50

. 6 引入了 LoggerMessageAttribute 类型。 使用时,它会以sourcegenerats的方式生成高性能的日志记录 API。 sourcegenerats可在编译代码时,可以提供其他源代码作为编译的输入。 LoggerMessageAttribute依赖于 ILogger 接口和 LoggerMessage.Define 功能。 在 partial 日志记录方法上使用 LoggerMessageAttribute 时,系统会触发源生成器。 触发后,它既可以自动生成其修饰的 pa

dotNet8 全局异常处理
2024/5/27 11:44:50

前言 异常的处理在我们应用程序中是至关重要的,在 dot 中有很多异常处理的机制,比如MVC的异常筛选器 管道中间件定义try catch捕获异常处理亦或者第三方的解决方案Hellang.dleware.ProblemDetails等。MVC异常筛选器不太灵活,对管道的部分异常捕获不到,后两种方式大家项目应该经常出现。 在 dot8 发布之后支持了新的异常处理机制 IExceptionHler或者UseExceptionHler异常处理程序的lambda配置,配合dot7原生支持的ProblemDetai

以对象的方式访问html中的标签,比正则表达式更好用的方式获取html中的内容,linq方式直接获取所有的链接,更加先进的c#版本爬虫开源库
2024/5/27 11:44:49

这是我本人自己写的一个开源库,现已经发布到nuget,可以直接在vs的nuget包管理中搜索到,或者可以到nuget官网下载:https:www.nuget.gpackagesZmjConvert,也可以到我的个人网站上下载源码:https:www.zhaimaojun.cnPC%23%e6%a0%87%e7%ad%be%e7%b1%bb%e6%96%87%e6%9c%ac%e5%ba%8f%e5%88%97%e5%8c%96%e5%ba%93 本包是. stard标准库包,可以在. ce,.,. fra

.NET项目轻松配置:掌握Packages.props和Build.props的利用
2024/5/27 11:44:49

概述:`Directy.Packages.props`和`Directy.Build.props`是.项目中的配置文件,分别用于统一管理NuGet包引用和自定义MSBuild构建过程。它们提高了解决方案的可维护性,通过集中配置,简化了项目文件,使团队协作更一致,同时避免了在每个项目中重复相同的配置,提高了开发效率。 在.开发中,Directy.Packages.props文件和Directy.Build.props文件都是用于配置和自定义项目构建行为的文件。它们可以用于在整个解决方案或特定项目中共享构建设

轻盈高效:深入了解.NET中的ValueStopwatch计时器
2024/5/27 11:44:49

概述:ValueStopwatch是.中轻量级计时器,用于高性能时间测量。作为值类型,避免了装箱拆箱开销,内存占用小。通过简单的使用方法,轻松实现代码块执行时间测量,且相比Stopwatch更为高效。 在.中,ValueStopwatch是一个轻量级的计时器类,用于测量代码块的执行时间。相较于System.Diagnostics.Stopwatch,它是一个值类型,提供更高的性能和更少的内存开销。 功能:测量执行时间: 计算代码块的执行时间。 轻量级设计: 使用值类型,减少装箱和拆箱的开销。基本使用方法:

CSharp的lambda表达式匿名类扩展方法
2024/5/27 11:44:48

c#的lamba表达式 之前已经写过一些关于委托还有事件的文章,今天就来介绍一下lambda表达式。 首先定义需要的函数以及委托 { public delegate void DoNothingDelegate() public delegate void StudyDelegate(int id string name)private void DoNothing() {Console.WriteLine("DoNothing") }private void Study(int id string n