随笔分类 - .net
.net 系列文章
摘要:C#里,foreach可以算是个高一等级的循环,因为想要使用foreach必须实现IEnumberable,然后还需要在这个接口的唯一方法中,用yield return返回元素,才能达到foreach的循环效果。 class MyList : IEnumerable { string[] arr =
阅读全文
摘要:using和IDisposable是组合使用的,像这种一个关键字和一个接口的组合,在C#中很少见的,using这个关键字,也就因为IDisposable多了一个身份。 其实很多人都知道IDisposable,有一个方法void Dispose(),通常是用来释放一些必须释放的资源时,要实现这个接口,
阅读全文
摘要:Moq在.net中比较出名的mock框架,NSubstitute也是属于这类框架,使用方式也如出一辙,是通过实现子类来达到mock的效果。下面的测试方法都是按照 UnitTest的三板斧Arrange Act Assert来展开的,代码具体如下。 using Microsoft.VisualBasi
阅读全文
摘要:创建一个控制台项目,.net5或.net6(Preview),在Program.cs中写如下代码,F5,能顺利跑起来,没有Program类,没有Main函数。 这是C#9带来的顶级语句的功能。 System.Console.WriteLine("你好,C#"); 其实这里的Program类和Main
阅读全文
摘要:如果想在一个项目中,用DapperPlus支持多种数据库该怎么做? 在《让Dapper支持Mock》中我们定义了DapperPlus,可以基于这个类,实现两个子类:MySqlDapperPlus,MsSqlDapperPls,在这两个子类的构造中适配对应的数据库类型,从注放容器中,获取IDbConn
阅读全文
摘要:在上一篇说了封闭Dapper扩展方法为一个接口来支持Mock,接下来看看如何实现读写分离。 其实定义两个接口,一个用来实现读,一个用来实现写。在读的接口里只有Query的方法,在写的接口里实现Query和Execute全量(通读写的库也是支持读的,有的场景还是必须在写库里读,因为写库往读库中同步时是
阅读全文
摘要:Dapper,在.net的ORM中占有一席之地,用法简单,灵活,使用如下。但也带来一个问题,就是在单元测试时,Mock比较难办。 public List<Goods> GetAllGoods() { using var con = new SqlConnection(); var sql = "se
阅读全文
摘要:我们知道,在c#中,如果两个类型没有继承关系 ,是不能相互值赋的,但有两个关键字implicit和explicit,可以让 Date date = DateTime.Now这样的赋值成为可能。 注:c#是没有Date类型的,但DateTime有Date属性 DateTime.Date,但这个属性本质
阅读全文
摘要:当我们用nuget引用三方库时,在类型,或类型成员上会有注释,如下图,是MySql官方包,command的ExecuteNonQuery的注释 我们自己写一个类库项目CommentsLibrary,给类,构造函数,方法添加xml注释,然后生成 using System; namespace Comm
阅读全文
摘要:前情提要:因为项目特点,需要在自己的服务器上集成测试,而不是用github的DevOpt体系;再有就是服务器是windows的;项目仓库在github上;并且项目是asp.net core的项目;开发人员一枚。以前的做法就是发布后,把执行码复制在服务器上启动;后来就是在服务器写了个bat,运行bat
阅读全文
摘要:在使用visual studio开发过程中,有时发现在“错误列表”中的一些提示,大体分为错误、警告、消息,错误是我们必须处理的,否则代码通过编译,警告有时常常会被忽略(也许你是细心人,会处理掉),有时,这样的忽略会为应用埋下安全的隐患。 其实这些提示,是来自微软的IDE的Security Code
阅读全文
摘要:大部分主流语言都支持web框架,并且实现起来相对轻便,简捷,比如: go的gin包 package main import "github.com/gin-gonic/gin" func main() { r := gin.Default() r.GET("/ping", func(c *gin.C
阅读全文
摘要:随着撸码的时间增加,码感也会加强,今天看一个编码直觉案例吧! 案例: 需求:把查询到的数据列表生成csv文件 nuget包:CsvHelper 数据实体类: /// <summary> /// 商品 /// </summary> public class Goods { /// <summary>
阅读全文
摘要:new new用三种场景,最常用的实例化,泛型参数时的实例化约束,第三种是显式隐藏继承成员。 using System; using System.Collections.Generic; using System.Data; using System.Linq; using System.Text
阅读全文
摘要:本例使用的规则引擎包是RulesEngine,关于RulesEngine的介绍,请自行补充,这里只是一个极简单使用场景。 例子大体就是用户有一些优惠券,系统会根据用户订单情况,筛选可以使用的优惠券供用户选择,用户选择后会计算出优惠后金额。 代码相对简单,就不一一介绍了,奉上service中的代码:
阅读全文
摘要:winform是一老技术,感觉都有点掉牙了(我近20年前就是从winform开始接触.net的);blazor,是微软技术圈里的新宠,正在被悉心照顾。当这一老一少的技术碰撞后,会有什么火花? .net v6.0.0-preview.3,给winform和blazor结合带来了前提。https://g
阅读全文
摘要:.net v6.0.0-preview.3的HotReload我是极喜欢的,因为之前有这样的需求——状态不丢,上下文不丢。 为了验证,安装完.net 6 preview 3后,新建一个webapi项目,写了如下简单代码: using Microsoft.AspNetCore.Mvc; using M
阅读全文
摘要:友情提示:这篇有点长,有点绕,加油! 上一篇文章,简单的说明了一下.net项目模板的创建,主要是通过在项目文件*.csproj同目录下添加.template.config文件夹和里面的template.json,再用dotnet new -i来安装项目模板的,本篇继续深入。 首先定个小目标: 实现一
阅读全文
摘要:你有没有这样的感觉,开启一个新项目时,总是做一堆体力活——项目的结构层次,常用日志库,OpenAPI库,ORM库,的引入,权限认证方式选择添加,配置文件重新归置存放等等。公共框架的部分总是不变的,如果有个常用项目的模板就好了,可以一键创建,接下来直接写业务就ok了。 这种场景还适合一些公司对源码,项
阅读全文
摘要:相信大家都受益过nuget.org,上面的海量的库、工具、模板为我们开发提供了极大的帮助,其中有很多都是非常宽松的开源协议,在此感谢那无私奉献的人 有的时候,在企业内部,有些库是私有的,专项的,要求非公开,另一方面需要公司内部开发人员共享这些库,这时就要搭建一个私用的NuGet仓库了。 BaGet就
阅读全文

浙公网安备 33010602011771号