[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.

正则表达式入门教程

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

用正则表达式实现一个简单的string.Format方法

最近在学习正则表达式,于是尝试了下用正则表达式实现一个简单的string.Format方法。遇到了几个问题并提供了一些解决思路和办法。

WCF Callback回调显示进度
WCF Callback回调显示进度

利用WCF的Callback Contract实现服务端回调显示进度百分比示例,客户端暴露出一个回调的EndPoint给服务端,服务端从调用的Context中拿到回调地址,然后通过CallbackContract进行回调,包含服务端和客户端实现

[C#] .net WebService返回 Dictionary 时序列化问题

今天在实现一个WebService方法时想放回一个Dictionary,编译通过,但是运行时报“is not supported because it implements IDictionary.”,这时由于Dictionary不能进行xml序列化引起的