随笔分类 - .NET 3.5
EntityFramework动态多条件查询与Lambda表达式树
摘要:在常规的信息系统中, 我们有需要动态多条件查询的情况, 例如UI上有多个选择项可供用户选择多条件查询数据. 那么在.net平台Entity Framework下, 我们用Lambda表达式树如何实现, 这里我们需要一个PredicateBuilder的UML类图: 实现的代码是这样的: /// /// Enables the efficie...
阅读全文
MsTest中实现类似NUnit中Assert.Throws
摘要:我们做单元测试NUnit中,有一个断言Assert.Throws很好用,但当我们使用MsTest时你需要这样写: 1: [TestMethod] 2: [ExpectedException(typeof(ArgumentNullException))] 3: public void WriteToTextFile() 4: ...
阅读全文
使用PDFBox提取PDF文件中文本
摘要:有时我们需要对PDF文件进行一些处理, 提取文本,合并等. 以前我们使用A-PDF Text Extractor免费工具,为什么不自己写一个呢? 现在我们可以使用PDFBox-0.7.3这个开源类库. 下载解包后引用: PDFBox-0.7.3.dll IKVM.GNU.Classpath.dll 新建一个项目,代码很简单: 1: public static st...
阅读全文
为IEnumerable<T>增加Combine的扩展方法
摘要:有时我们需要合并两个集合,并同时做一些修改。下面我们实现一个扩展方法在IEnumerable<T>上,看下面的代码: 如何使用,看UnitTest:希望这篇POST对您有帮助。作者:Petter Liu 出处:http://www.cnblogs.com/wintersun/ 本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保...
阅读全文
用扩展方法来为Enum类型加入业务逻辑
摘要:我们在开发经常要使用Enum类型,今天我们用扩展方法来为Enum类型加入业务逻辑. 有以下的代码: 然后写一个扩展方法: 好了,让我们来看如何使用: 代码很简单,希望对您有开发有帮助。作者:Petter Liu 出处:http://www.cnblogs.com/wintersun/ 本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留...
阅读全文
WCF RIA Services 快速上手
摘要:WCF RIA Services 简化开发RIA n-tier 解决方案。让你快速构建Silverlight n-tier应用程序客户端与服务端的通信。下面我们来看一张图: 下面我们来构建一个简单的...
阅读全文
使用Moq来Mock多个接口
摘要:假设您已对Moq已经有所了解,我们经常会遇到多个Interface,在这个情况下我们如何去Mock它们呢,看下面的示例:定义下如下的Interface:然后定义一个Generic方法实现两个Interface 特别的方法相加,返回结果:让我们来看如何Mock它们:注意这里使用As方法,增加一个指定的Interface到Mock.下面这个方法也可以Pass:您可以下载Moq,NUnit测试以上代码....
阅读全文
使用LINQPad消费OdataService
摘要:之前我们曾经介绍过使用Excel2010 PowerPiovt消费OData Service ,今天让我们使用LINQPad实现,LINQPad是一个免费的LINQ查询分询器。支持C#表达式,T-SQL,Entity-SQL等。 这里我们使用的是4.20 verison,通过增加一个Connection,还是使用TechEd 2010 官网的Odata Service.创建后如下图所示: 当我们...
阅读全文
Func委托应用之生成简单随机密码
摘要:.net framework 3.5 中提供了强大的委托类型Func<T, TResult>,如果您不清楚可以先参考:MSDN 下面来看这个小函数生成简单随机密码: UnitTest: 很简单的代码,希望对您有帮助! 您可能对下面这篇文章感兴趣: 用CSharp生成强密码作者:Petter Liu 出处:http://www.cnblogs.com/wintersun/ 本文版权归作者...
阅读全文
使用LINQ读取分隔符文本文件
摘要:有时我们会处理一些带分隔符数据文本文件。例如,使用”,”分隔的数据,如下图: 然后它们存储到文本文件有这样的列: First Name Last Name Job Title City Country 在我们读取这个文件之前,先建一个实体类: 接着我们使用LINQ读取整个文件:要读取可以带条件的记录也可以,我们filter出Country是UK:另一例子:Author: Petter L...
阅读全文
IEnumerable的扩展方法
摘要:近期收集一些基于IEnumerable<T>扩展方法,它给我们带了很多便利,有时的确是实用的。其中有Alternate,Append,Prepend,Distinct,Contains。具体怎么用呢,看下面的UnitTest. Code: /// <summary> /// IEnumerableExtension /// </summary> public s...
阅读全文
使Dictionary泛型查询简单化
摘要:我们经常使用Dictionary<T> 来做些操作,查询一个object,没有找到就Add它。代码像如样: 1: private static Dictionary<string,Employee> employees; 2: … 3: public static Employee GetByName(string name) { 4: Employee employ...
阅读全文
Orderby的扩展方法
摘要:CSharp3.0中扩展方法,直接看代码:/// <summary>/// Orders the by./// </summary>/// <typeparam name="T"></typeparam>/// <param name="list">The list.</param>/// <param name="so...
阅读全文
在Asp.net MVC framework中使用扩展方法创建Html Helper
摘要:HtmlHelper提供了一些帮助的方法返回一个字符串来生成html. 在System.Web.Mvc.Html命称空间下有一些表单,控件,局部视图Helper方法.我将创建一个生成标签<input type=”submit”,名称为SubmitConfirmHelper的类.看下面:using System.Web.Mvc;namespace Helpers{ public static ...
阅读全文
用扩展方法生成分割符字符串
摘要:使用扩展方法对IEnumerable<T>扩展,来生成分割符字符串.看这个方法:/// <summary>/// Get the delimited string./// </summary>/// <typeparam name="T">T</typeparam>/// <param name="list">The list...
阅读全文
使用Moq修改默认的ASP.NET MVC项目单元测试
摘要:当你创建一个ASP.NET MVC项目时,你可能注意到自动增加基于ASP.NET membership的名为AccountController验证类.有一个问题,当你去看AccountController单元测试类时,你会发现它们是手动Mock的类.我们可以使用第三方mocking类库来代替它们.这里使用是Moq.Moq是一个轻量级mocking框架,基于.net Framework3.5与 LI...
阅读全文
Asp.netMVC中通过反射获取Controller的相关信息
摘要:在ASP.NET MVC开发中,通常有很多Controller,Action.我们可以从外面以反射,Linq的语法来获取些信息.Linq语法使得代码可读性高.看UnitTest: /// <summary> /// Tests the get info from controller. /// </summary> /// <remarks>http://win...
阅读全文
泛型小记与泛型Dictionary使用Enum
摘要:泛型的应用无处不在,下面是项目代码片断,比较典型的泛型与反射应用,提供了类型安全.场景是项目中有基于exchange访问,使用了Exchange Web Services Manage API,我们需要写一个辅助查询的Enum属性类,以Dictionary的方式,Enum类型对Key,string类型为Value.最后转换成Manage API中具体查询类. public enum Contact...
阅读全文
C#3.0实现延迟赋值
摘要:延迟赋值主要有两点: 1.一个参数可能或可能没被赋值. 2.一个参数在一个函数中每次使用时可能被赋值. 如下面的这种情况:int Add(int x, int y){ return (2 + 1) + (1);}使用Func<T>,我们轻松实现,看代码:/// <summary>/// LazyExpression/// </summary>/// <...
阅读全文
Builder模式与Fluent接口
摘要:我们首先回故下Builder模式的意图: 将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。[DP]那我们C#中switch语句块,从一个层面上来看,就是由几部分组成的,我们来实现一个SwitchBuilder类具有这种功能.那什么是Fluent接口,可以先看这儿wiki. 有的时候我们需要Enum类型处理复杂的类型,有一个描述字段,或还有更多其它的字段信息.我们创建一个使...
阅读全文