分类 .Net 下的文章

C#扩展方法

扩展方法可以让你在不对原有类型进行修改、继承和重新编译的条件下,添加一些额外功能。扩展方法是一种特定类型的静态方法,但可以通过原始类型的实例进行调用。通过C#实现的扩展方法在使用方法上跟原始类型的真实定义的方法没有不同。

因此上述特性很适合在对一些类库进行二开时使用,如笔者就是通过项目中发现对newtonsoft.json.dll进行扩展才了解到这个知识点的。可见多读项目代码还是多少有用的!

最常用的扩展方法要数对于System.Collections.IEnumerable和System.Collections.Generic.IEumerable<T>类型添加LINQ查询操作。要使用标准的LINQ查询方法,只要引入System.Linq命名空间,然后在任何实现IEnumerable<T>接口的类型实例中都可以使用GroupBy, OrderBy, Average等方法,如List<T>和Array。

- 阅读剩余部分 -

带转换的继承类的JSON序列化

本文只是一个简单的知识点,撰文起因是之前在项目中用到内部类的JSON序列化有问题,后来发现是自己写法错误。这里权当一个记录吧。

在通过继承方式实现语言的多态性时,对有转换和替换关系的基类、子类对象进行JSON的序列化和反序列化,需要设置JsonSerializerSettings中的类型名称TypeNameHandling枚举才能生效。

- 阅读剩余部分 -

JSON Schema Validation介绍

工作中经常会开发一些接口公布出去,接口以HTTPHandler方式挂载在ASP.NET上,是以*.filetype的后缀形式路由到具体的处理类中。接口参数以JSON格式通过post方法写在Request body中,宿主的ERP系统并没有提供对应的参数校验框架,因此无法像其他基于其他API框架的形式,对输入参数进行统一的校验。

本文针对这种情况,将介绍下JSON.NET自带的JSON Schema校验方式。

- 阅读剩余部分 -

C#随机数生成函数Random介绍

生成随机数在很多编程环境中都需要用到,这个看似简单的操作却很容易发生问题,当你在网上搜索时很快就会发现很多同行有相同的经历。

本文将介绍C#中随机数生成函数Random()原理及使用。

- 阅读剩余部分 -

C# Round()函数,数值四舍五入取整方式

今天在项目中偶然遇到使用decimal.Round()函数对decimal值进行取2位小数时,0.995的值为1. 代码如下:

decimal newVal = decimal.Round((decimal)0.995, 2);

运行后newVal=1. 因为是涉及到打折的问题,所以预期期望应该是0.99。于是找了下资料,读了MSDN的文档,对decimal取整的用法大致熟悉了,遂成此文,用于参考。

- 阅读剩余部分 -