WPF/C#:在WPF中如何实现依赖注入
前言
本文通过 WPF Gallery 这个项目学习依赖注入的相关概念与如何在WPF中进行依赖注入。
什么是依赖注入
依赖注入(Dependency Injection,简称DI)是一种设计模式,用于实现控制反转(Inversion of Control,简称IoC)原则。依赖注入的主要目的是将对象的创建和对象之间的依赖关系的管理从对象内部转移到外部容器或框架中 ...
C#/.NET/.NET Core优秀项目和框架2024年6月简报
前言
公众号每月定期推广和分享的C#/.NET/.NET Core优秀项目和框架(每周至少会推荐两个优秀的项目和框架当然节假日除外),公众号推文中有项目和框架的介绍、功能特点、使用方式以及部分功能截图等(打不开或者打开GitHub很慢的同学可以优先查看公众号推文,文末一定会附带项目和框架源码地址)。注意:排名不分先后,都 ...
WPF/C#:如何实现拖拉元素
前言
在Canvas中放置了一些元素,需要能够拖拉这些元素,在WPF Samples中的DragDropObjects项目中告诉了我们如何实现这种效果。
效果如下所示:
拖拉过程中的效果如下所示:
具体实现
xaml页面
我们先来看看xaml:
<Canvas Name="MyCanvas"
PreviewMouseLeftButtonDown="MyCanvas_PreviewMouseLeftButtonDown" ...
C# 13(.Net 9) 中的新特性 - 扩展类型
C# 13 即 .Net 9 按照计划会在2024年11月发布,目前一些新特性已经定型,今天让我们来预览一个比较大型比较重要的新特性:
扩展类型 Extension types
在5月份的微软 Build 大会中的 What’s new in C# 13 会议上,两位大佬花了很长的篇幅来演示这个特性。
这个特性一直是大家很关心的,在 github 的 issue 上讨论的也是如火 ...
C#如何创建一个可快速重复使用的项目模板
写在前面
其实很多公司或者资深的开发都有自己快速创建项目的脚手架的,有的是魔改代码生成器实现,有的直接基于T4,RazorEngine等模板引擎打造;但无论如何,其最终目的其实就是搭建一个自定义项目模板(脚手架)。
今天我们聊聊:如何基于官方的cli donet new 命令创建自己的项目模板。
什么是项目模板
我想用一个命令来说 ...
C#.Net筑基-集合知识全解
01、集合基础知识
.Net 中提供了一系列的管理对象集合的类型,数组、可变列表、字典等。从类型安全上集合分为两类,泛型集合 和 非泛型集合,传统的非泛型集合存储为Object,需要类型转。而泛型集合提供了更好的性能、编译时类型安全,推荐使用。
.Net中集合主要集中在下面几个命名空间中:
1.1、集合的起源:接口关系
...
使用C#开发OPC UA服务器
OPC基金会提供了OPC UA .NET标准库以及示例程序,但官方文档过于简单,光看官方文档和示例程序很难弄懂OPC UA .NET标准库怎么用,花了不少时间摸索才略微弄懂如何使用,以下记录如何从一个控制台程序开发一个OPC UA服务器。
安装Nuget包
安装OPCFoundation.NetStandard.Opc.Ua
主程序
修改Program.cs代码如下:
using Opc. ...
C#/.NET/.NET Core优秀项目和框架2024年5月简报
前言
公众号每月定期推广和分享的C#/.NET/.NET Core优秀项目和框架(每周至少会推荐两个优秀的项目和框架当然节假日除外),公众号推文中有项目和框架的介绍、功能特点、使用方式以及部分功能截图等(打不开或者打开GitHub很慢的同学可以优先查看公众号推文,文末一定会附带项目和框架源码地址)。注意:排名不分先后,都 ...
C# .NET 6 使用WorkFlow Core 创建工作审批流
1,背景
工作流思想在上世纪60年代就有人提出过;70年代就有人开始尝试,但是由于当时许多的限制,工作流一直没有成功的被实现;80年代才出现第一批成功的工作流系统;90年代工作流技术走向了第一个发展高峰期;90年代后至今工作流出现了很多版本,但是主旨还是不变的,为了使我们的工作变得更加高效。
通俗点,我 ...
C#.Net筑基-String字符串超全总结 [深度好文]
字符串是日常编码中最常用的引用类型了,可能没有之一,加上字符串的不可变性、驻留性,很容易产生性能问题,因此必须全面了解一下。
01、字符与字符编码
1.1、字符Char
字符 char 表示为 Unicode字符,在C#中用 UTF-16 编码表示,占用2个字节(16位)大小,字面量用单引号''包裹。
char c = 'A';
Console.WriteLine(char ...
.NET C# 程序自动更新组件
引言
本来博主想偷懒使用AutoUpdater.NET组件,但由于博主项目有些特殊性和它的功能过于多,于是博主自己实现一个轻量级独立自动更新组件,可稍作修改集成到大家自己项目中,比如:WPF/Winform/Windows服务。大致思路:发现更新后,从网络上下载更新包并进行解压,同时在 WinForms 应用程序中显示下载和解压进度条,并重启 ...
C#开源实用的工具类库,集成超过1000多种扩展方法
前言
今天大姚给大家分享一个C#开源(MIT License)、免费、实用且强大的工具类库,集成超过1000多种扩展方法增强 .NET Framework 和 .NET Core的使用效率:Z.ExtensionMethods。
直接项目引入类库使用
在你的对应项目中NuGet包管理器中搜索:Z.ExtensionMethods安装即可使用。
支持.NET Standard 2.0和.NET Framework 4.0 ...
C#.Net筑基-深入解密小数内部存储的秘密
为什么0.1 + 0.2 不等于 0.3?为什么16777216f 等于 16777217f?为什么金钱计算都推荐用decimal?本文主要学习了解一下数字背后不为人知的存储秘密。
01、数值类型
C#中的数字类型主要包含两类,整数、小数,C#中的小数都为浮点(小)数。
void Main()
{
int a1 = 100;
int a2 = 0x0f; //15
var b2 = 0b11; //3
var ...
WPF/C#:理解与实现WPF中的MVVM模式
MVVM模式的介绍
MVVM(Model-View-ViewModel)是一种设计模式,特别适用于WPF(Windows Presentation Foundation)等XAML-based的应用程序开发。MVVM模式主要包含三个部分:Model(模型)、View(视图)和ViewModel(视图模型)。
Model(模型):模型代表的是业务逻辑和数据。它包含了应用程序中用于处理的核心数据对象。 ...
C#.Net筑基-类型系统①基础
C#.Net的BCL提供了丰富的类型,最基础的是值类型、引用类型,而他们的共同(隐私)祖先是 System.Object(万物之源),所以任何类型都可以转换为Object。
01、数据类型汇总
C#.NET 类型结构总结如下图,Object是万物之源。最常用的就是值类型、引用类型,指针是一个特殊的值类型,泛型必须指定确定的类型参数后才是一个正 ...
初识上位机(下):C#读写PLC数据块数据
大家好,我是Edison。
作为一个工业自动化领域的程序员,不懂点PLC和上位机,貌似有点说不过去。这里我用两篇小文带你快速进入上位机开发领域。后续,我会考虑再出一个系列文章一起玩工控上位机。
上一篇:搭建PLC模拟仿真环境
复习一下
在上一篇中,我们通过PLCSIM Advanced软件创建了一个虚拟的西门子S7-1500 PLC如下所示 ...
C#.Net筑基-模式匹配汇总
01、模式匹配概述
从C#7开始支持的 模式匹配 语法(糖,挺甜),可非常灵活的对数据进行条件匹配和提取,经过多个版本的完善,已经非常强大了。
C# 支持多种模式,包括声明、类型、常量、关系、属性、列表、var 和弃元等,在is、switch语句、switch表达式中使用,还可以使用布尔逻辑关键字 and、or 和 not 组合多个模式, ...
C#/.NET/.NET Core优秀项目和框架2024年4月简报
前言
公众号每月定期推广和分享的C#/.NET/.NET Core优秀项目和框架(每周至少会推荐两个优秀的项目和框架当然节假日除外),公众号推文中有项目和框架的介绍、功能特点、使用方式以及部分功能截图等(打不开或者打开GitHub很慢的同学可以优先查看公众号推文,文末一定会附带项目和框架源码地址)。注意:排名不分先后,都 ...
C#.Net筑基-基础知识
01、C#基础概念
1.1、C#简介
C# (读作C Sharp)是由微软公司开发的一种面向对象、类型安全、高效且简单的编程语言,最初于 2000 年发布,并随后成为 .NET 框架的一部分。所以学习C#语言的同时,也是需要同步学习.NET框架的,不过要要注意C#与.NET的对应版本。
C#语言和Java类似,是一门简单易用、应用广泛的高级编程语 ...
C#.NET体系图文概述—2024最全总结
C# 是一种简单、现代、面向对象和类型安全的编程语言。。
.NET 是由 Microsoft 创建的开发平台,平台包含了语言规范、工具、运行,支持开发各种应用,如Web、移动、桌面等。.NET框架有多个实现,如.NET Framework、.NET Core(及后续的.NET 5+版本),以及社区版本Mono。除此以外,C#.NET体系还有很多概念,本文就来简单了 ...