DotNet
文章平均质量分 71
fofo2013
这个作者很懒,什么都没留下…
展开
-
DotNet(C#)实现事件远程注册和触发
背景:以前做过一套分布式任务管理架构来为某网站提供数据计算服务,该网站每次数据计算可以分解为几百个小任务进行,而每个任务可能需要访问的数据量很大,所以系统有一个管理平台,用来显示系统的运行状态,或某类计算节点的运行压力,用户也可以在平台上执行一些管理功能,为了应对平台上频繁的功能追加,在系统核心模块添加了事件处理模块,每当用户需要在平台添加某个功能,只需要开发对应功能的一个功能原创 2013-04-02 15:40:43 · 1012 阅读 · 0 评论 -
创建常量、原子性的值类型
概述本文是《Effective C#》一书第七节的读书笔记。通过这篇文章,我主要想向大家说明一个我们平时可能不太会注意到的问题:创建具有常量性和原子性的值类型。从类型设计谈起从Class到Struct假如我们要设计一个存储收信人地址的类型(Type), 我们管这个类型叫 Address。它应该包含这样几个属性:Province 省City 市Zip转载 2013-04-27 16:59:37 · 484 阅读 · 0 评论 -
动态创建表达式树
表达式树是一种数据结构,以数据形式表示语言级代码。.Net平台引入的"逻辑即数据"概念。所有的数据都存储在树结构中,每个结点表示一个表达式(Expression)。要想手动生成表达式树我们需要引用System.Linq.Expressions 命名空间,最重要的一个类是Expression,它是所有表达式的基类。using System;using System.Collecti原创 2013-05-03 16:35:07 · 941 阅读 · 0 评论 -
利用扩展方法实现参数检查
在方法中我们经常需要检查方法的传入参数以避免运行时错误,如果参数的检查项比较多,经常要写出很臃肿的代码,也会出现很多重复的代码。 扩展方法可以很方便的解决这个问题,如下:using System;using System.Data;namespace fofo.Extensions{ public static class DataSetExtension原创 2013-05-07 09:39:41 · 578 阅读 · 0 评论 -
C#特性的应用(简易横切关注点实现)
在系统开发时,经常会有些横越多个模块的行为,使用传统的软件开发方法并不能够有效的模块化,一般这些行为我们称为横切关注点,如日志、异常、特殊的权限检查等,这里不细讨论横切关注点这个话题,我们用一个例子来说说特性在这个方面的使用,假如有一个系统有很多业务服务组成,每个业务服务的访问权限只有具体服务开发人员根据需求才能确定,而具体的用户权限情况由专门用户管理模块管理,我们用特性和反射来实原创 2013-05-13 18:12:19 · 750 阅读 · 0 评论 -
TPL使用异步编程模型(APM)实现简单网页抓取
using System;using System.Collections.Generic;using System.Linq;using System.Net;using System.Threading;using System.Threading.Tasks;namespace fofo.NetSpider{ public class SimpleNetSpider原创 2013-06-04 12:50:11 · 638 阅读 · 0 评论 -
C#实现简单优先队列
using System;using System.Collections.Generic;namespace fofo.DataStructor{ public class PriorityQueue where T: IComparable//, new() { private const int DEFAULT_CAP = 100;原创 2013-07-22 14:09:56 · 727 阅读 · 0 评论 -
C#中的相等性判断(RefrenceEquals、Equals)
/// ///等同性的数学定义:自反、对称、传递 /// /// /// RefrenceEqual: /// static bool ReferenceEquals(object objA, object objB); /// 值类型调用永远返回false(原因在于装原创 2013-08-01 00:36:43 · 797 阅读 · 0 评论