Loading

随笔分类 -  C#

摘要:优化委托的 `DynamicInvoke` 阅读全文
posted @ 2020-04-19 18:22 WeihanLi 阅读(2230) 评论(9) 推荐(3)
摘要:支持中间件管道的中断和分支 阅读全文
posted @ 2020-04-15 23:39 WeihanLi 阅读(1358) 评论(2) 推荐(6)
摘要:让 .NET 轻松构建中间件模式代码 阅读全文
posted @ 2020-04-14 18:28 WeihanLi 阅读(2962) 评论(3) 推荐(7)
摘要:基于 Roslyn 实现的条件解析引擎 阅读全文
posted @ 2020-03-19 21:36 WeihanLi 阅读(1662) 评论(0) 推荐(1)
摘要:基于 redis 实现分布式下的 CAS 操作 阅读全文
posted @ 2020-03-08 01:45 WeihanLi 阅读(14666) 评论(1) 推荐(3)
摘要:DbTool 是一个支持 CodeFirst/DbFirst/ModelFirst 的数据库小工具,原本是基于 dotnet framework WinForm 实现的,在 1.1.0 版本更新中使用 dotnet core 3.1 基于 WPF 重写了,并实现了一个简单的基于插件模式开发模式并引入了多语言的基础支持。 阅读全文
posted @ 2020-02-15 17:29 WeihanLi 阅读(1144) 评论(9) 推荐(5)
摘要:用 C# 写一个 Redis 数据同步小工具 阅读全文
posted @ 2020-02-05 23:19 WeihanLi 阅读(1915) 评论(1) 推荐(5)
摘要:WeihanLi.Npoi 1.7.0 版本,增加了 `ColumnInputFormatter`/`ColumnOutputFormatter`,又进一步增强了导入导出的灵活性 阅读全文
posted @ 2020-01-04 11:24 WeihanLi 阅读(593) 评论(0) 推荐(1)
摘要:日志组件有很多,比如 `log4net` / `nlog` / `serilog` / `microsoft.extensions.logging` 等,如何在切换日志组件的时候做到不用修改代码,只需要切换不同的 `loggingProvider` 就可以了,最低成本的降低切换日志框架的成本,处于这个考虑自己写了一个日志组件,为不同的日志框架写一个适配,需要用到什么日志框架,配置一下就可以了,业务代码无需变动。 阅读全文
posted @ 2020-01-01 11:38 WeihanLi 阅读(1365) 评论(5) 推荐(6)
摘要:在 EF 里有个 `ShadowProperty` (阴影属性/影子属性)的概念,你可以通过 FluentAPI 的方式来定义一个不在 .NET model 里定义的属性,只能通过 EF 里的 `Change Tracker` 来操作这种属性。 在导出 Excel 的时候,可能希望导出的列并不是都定义好在我们的 model 中的,有的可能只是想增加一列导出某个属性中的嵌套属性之中的某一个属性值,或者我就是单纯的想多定义一列,而这个时候可能 model 是别的地方写死的,不方便改。 于是 `WeihanLi.Npoi` 从 1.6.0 版本开始支持 `ShadowProperty` ,将 EF 里的 `ShadowProperty` 引入到 excel 导出里。 阅读全文
posted @ 2019-12-13 08:48 WeihanLi 阅读(596) 评论(1) 推荐(4)
摘要:之前实现的那版依赖注入框架基本可用,但是感觉还是不够灵活,而且注册服务和解析服务在同一个地方感觉有点别扭,有点职责分离不够。于是借鉴 Autofac 的做法,增加了一个 `ServiceContainerBuilder` 来负责注册服务,`ServiceContainer`负责解析服务,并且增加了一个 `ServiceContainerModule` 可以支持像 Autofac 中 `Module`/` RegisterAssemblyModules ` 一样注册服务 阅读全文
posted @ 2019-11-28 18:55 WeihanLi 阅读(1261) 评论(0) 推荐(0)
摘要:最近项目里有遇到一些并发的问题,想实现一个队列来将并发的请求一个一个串行处理,可以理解为使用消息队列处理并发问题,之前实现过一个简单的 `EventBus`,于是想在 `EventBus` 的基础上改造一下,加一个队列,改造成类似消息队列的处理模式。消息的处理(Consumer)直接使用 .netcore 里的 `IHostedService` 来实现了一个简单的后台任务处理。 阅读全文
posted @ 2019-11-24 09:53 WeihanLi 阅读(2143) 评论(0) 推荐(2)
摘要:SQL Server 中 的使用 Intro SQL Server 从 2016 开始支持了一些 JSON操作,最近的项目里也是好多地方字段直接存成了 JSON,需要了解一下怎么在SQL Server 中操作 JSON. JSON支持适用于 SQL Server 2016 及以上版本 和 Azure 阅读全文
posted @ 2019-11-13 22:37 WeihanLi 阅读(2489) 评论(0) 推荐(2)
摘要:最近对我的 NPOI 扩展做了一些改变,一方面提高性能,一方面修复bug,增加一些新的功能来让它更加好用,前几天发布了 1.5.0 版本,下面来介绍一下最近的更新 阅读全文
posted @ 2019-11-11 23:12 WeihanLi 阅读(1476) 评论(6) 推荐(4)
摘要:动手造轮子:实现一个简单的依赖注入(一) 阅读全文
posted @ 2019-10-28 23:36 WeihanLi 阅读(1844) 评论(6) 推荐(7)
摘要:动手造轮子:实现一个简单的依赖注入 整体设计和编程体验 阅读全文
posted @ 2019-10-27 16:22 WeihanLi 阅读(2629) 评论(0) 推荐(2)
摘要:动手造轮子:实现一个简单的 EventBus Intro EventBus 是一种事件发布订阅模式,通过 EventBus 我们可以很方便的实现解耦,将事件的发起和事件的处理的很好的分隔开来,很好的实现解耦。 微软官方的示例项目 "EShopOnContainers" 也有在使用 EventBus 阅读全文
posted @ 2019-07-22 07:58 WeihanLi 阅读(11361) 评论(15) 推荐(24)
摘要:有时候我们想实现 leftJoin 但是 Linq 提供的 Join 相当于是 `INNER JOIN`,于是就打算实现一个 `LeftJoin` 的扩展。 阅读全文
posted @ 2019-06-26 18:34 WeihanLi 阅读(581) 评论(0) 推荐(0)
摘要:`Newtonsoft.Json` 是 .NET 下最受欢迎 JSON 操作库,使用起来也是非常方便,有时候也可能会不小心就踩坑了,这次就踩了一个,坑是这样的,如果要序列化的对象实现了 `IEnumerable` 接口,`Newtonsoft.Json` 就会认为这个对象是一个数组。。然后遍历这个对象,输出其中的值,如果是一个自定义的类型而且还有其他属性,其他属性就会被忽略,序列化之后就会发生数据丢失。 阅读全文
posted @ 2019-06-25 10:47 WeihanLi 阅读(2053) 评论(0) 推荐(0)
摘要:`newtonsoft.json` 是 .NET 下最受欢迎 JSON 操作库,原为 `JSON.Net` 后改名为 `Newtonsoft.Json`,之前一直推荐大家使用,除了性能好之外,主要是功能丰富,基本满足所有的可能用到的场景(不区分小写,现在还不行,,)。 遇到这样一个需求,全局使用一种时间格式,某些属性使用特殊的时间格式,这里以一个日期为例 阅读全文
posted @ 2019-06-25 00:34 WeihanLi 阅读(2578) 评论(0) 推荐(0)