[C#]Attribute + TypeConverter 实现 Excel To Json

最近在项目上需要实现一个把Excel的内容转成 Json的功能,使用了 Attribute + TypeConverter,Attribute 用于标记列与属性的对应关系,TypeConverter 用于处理特殊数据结构,易于维护,方便扩展

[C#]dynamic+reflection=像public一样调用private类成员

在项目上写UT时,代码里面有大量的protected属性,需要被mock掉,但是因为是protected,不能被外部赋值,因此找到了用dynamic加反射的形式实现一个包装类,能够像调用public成员一样点吧点吧调用private成员

OOP系列之OO设计七大原则

对于OOP,想必大家都很熟悉,通常我们说的OOP有5大原则,即SOLID,这里我加上了两条也比较重要的迪米特法则和多用组合少用继承,组成了OO设计的七大原则,我们一起来复习一下。

OOP系列之聊聊依赖

依赖,或者用英语更准确,dependency,是程序设计中不同对象或方法之间所必不可少的,我们的代码就是由不同的方法不同的对象相互调用组成的,因此,对于依赖,我们要做到心里有数,依赖是如何产生的,依赖的强弱关系是怎样的。依赖的强弱是指依赖者对被依赖对象的依赖程度,即替换被依赖对象所花费的代价程度如何,依赖程度越强,替换掉被依赖对象的代价就越大,方法越底层,难度越大,灵活性越差。

[C#]单线程递归遍历文件夹

最近在做一些代码分析的小程序,抓出代码里面符合特定规则的文件,把符合特征的代码文件和代码片段抓出来,输出成一个txt文件,方便统计和查找,为日后分析做准备,因为要遍历所有项目文件,所以需要程序依次访问每个文件夹下的所有文件,因为还有子文件夹,因此想到了用递归来遍历,这个实现没有涉及多线程,以后有机会再改成多线程吧,这里记录一下方法,用到了尾递归。

[C#]聊聊.net core的InMemoryCache

这两天在看.net core的in memory cache,这里记录一下用法,主要涉及MemoryCache的Get/Set/Expire/Flush。

[C#]在Mac上安装VsCode+Vim插件

这里总结一下在Mac上安装VsCode和Vim插件时遇到的一些坑,希望能帮助到遇到同样问题的人。

[C#].net 异步编程的前世今生 & async & await

今天我们来聊一聊.net异步编程,.net 4.5为我们提供了两个新的关键字async 和 await,使我们能够借助TAP提供的一系列Async方法像同步编程一样来写异步代码,这篇文章里还会回顾一下之前异步编程的一些模式,比如EAP,APM,让我们体会一下async和await带来的便利。

[C#]代码之坑–编译器不会告诉你的那些事

这些一个个的零散的小点都是在日常工作中总结出来的,似乎没有哪一本编程书会讲这些,所以就总结出来放到这里,要记住你所做的一切决定,都是有代价的,或是性能,或是灵活性,没有最优解,你需要自己去权衡。

[C#]Attribute 与 反射

Attribute是C#的一种语言特性,用于为各种实体(class,field,property)附加一些说明性信息, 并且可以在运行时环境中检索这些信息(通过反射)。这篇文章介绍了如何去声明和使用一个attribute,并且介绍了反射的基本知识,以及如何运用反射来读取attribute的信息。

ElmahR Introduction

Elmah stands for Error Logging Modules and Handlers and is used to log unhandled exceptions to the file system, event log, databases or even have it email you the errors.

正则表达式入门教程

本文介绍了正则表达式的基本用法,和一些举例,参照例子能够轻松上手

第二个Chrome扩展程序-生成二维码

从上次实现了第一个Chrome扩展程序之后,我们对chrome扩展程序对组织结构有了一定的了解,对这次我们来学习如何自己写一个生成二维码的Chrome扩展程序,主要功能是把网址或者用户输入的内容转化成二维码。

Vim笔记

记录平时使用过程中遇到的vim快捷键

MS SQL 笔记

MSSQL笔记,比如查询外键约束是否存在并插入,查询表是否存在,查询列名是否存在并添加等