随笔分类 - dotnetFramework
在CentOS上构建.net自动化编译环境
摘要:我们知道在Windows上我们很容易构建于MSBuild的自动化编译环境,那么在CentOS也是可以的,主要是需要Mono。 在这儿我们选择Jenkins+Gitlab+Mono在CentOS 6.5构建的环境。 1. 安装 Jenkins Jenkins,之前叫做Hudson,是基于Java开发的一种持续集成工具,用于监控持续重复的工作,...
阅读全文
Async下处理多个异常
摘要:Task Parallel Library (TPL) 中,当你使用async/await语法关键字时,你可能遇到以下异常处理的情况: Catch 块只会处理第一个异常而忽略其它的异常。来看下面代码块: 1: private static async void TestCatchExceptionWithTPL() 2: ...
阅读全文
Asp.net MVC 4 异步方法
摘要:前面一篇文章我们介绍了Asp.net MVC 3下异步操作。今天我们来看一下,同样功能在 Asp.net MVC 4 下的实现,基于.net framework 4.5 下的async支持,让我们的代码更加简单,看下面片断代码名叫Index的Action方法: public async Task<ActionResult> IndexAsync() ...
阅读全文
使用JustDecompile修改程序集
摘要:JustDecompile是Telerik公司推出一个免费的.net反编译工具,支持插件,与Visual Studio 2010,2012集成,能够创建Visual Studio project文件。今天我们使用其一个插件Assembly Editor Plugin来修改程序集。首先,我们来写一个非常简单的时间限制程序: 1: static void ...
阅读全文
VisualStudio2012轻松把JSON数据转换到POCO的代码
摘要:在Visual Studio 2012中轻松把JSON数据转换到POCO的代码,首先你需要安装Web Essentials 2012。在VS2012中,任何cs文件中单击右键就出现这样的菜单: 以这个 http://channel9.msdn.com/niners/CapSoft/achievements/visualstudio?json=true&raw...
阅读全文
.net中用Action等委托向外传递参数
摘要:一般我们可以使用ref,out达到向外传递参数目的。 Action<T>是一个特殊的委托,除了常规应用。我们还可以用它来实现简单地向外传递参数。直接看下面的UnitTest代码: 1: [TestMethod] 2: public void PassOutParametersUsingDelegate() 3: { 4: ...
阅读全文
数据访问层的单元测试
摘要:数据访问层在分层结构,比较常见. 有时可能是数据访问模块. 假设数据访问层后端是数据库,那我们如何测试他们的呢? 有时实际这种测试是集成测试了.有时数据库里还有一些逻辑,触发器,约束等. 个人十分不建议把业务逻辑放在数据库里实现. 最常见的数据库表的操作create, read, update和delete(简称CRUD), 例如我们需要测试某个Add方法,在这个测试方法完成后, 希望这条测试数...
阅读全文
用反射查找当前AppDomain中程序集的所有Attribute类型
摘要:前段时间园子有个人发一道面试题是这样的,找出.net framework 中的所有Attribute。通常这个问题需要指定范围的,下面让我们来实现一下查找当前AppDomain中程序集的所有Attribute,您可以举一反三,接下看下来的代码: 1: [TestMethod] 2: public void TestGetCurrentAppDomainAttribuesNameTree() 3:...
阅读全文
用.net4中的DynamicObject实现简单AOP
摘要:在.net framework 4中有一个DynamicObject 类型,我们通过重写 TryInvokeMember 方法实现简单的AOP。首先看类图: 看下面的代码: public class DynamicWrapper : DynamicObject { private readonly object source; public DynamicWrapper(object sourc...
阅读全文
在Asp.net WebForm中实现URL Routing
摘要:在Asp.net 4.0 webform我们也能简单方法实现URL重写。例如,我们原来是这样请求的URL: http://localhost:60727/City.aspx?name=ShangHai 现在变化这样的:http://localhost:60727/Cities/ShangHai 如果您曾接触过ASP.NET MVC,那么你将更加熟悉下面的代码:Global.asax: 1: vo...
阅读全文
.net4.0下的Lazy<T>类型简单应用
摘要:.net framework为我们提供了一个Lazy<T> 类型,给我们开发带来很多便利,看如下的代码,有这样一个Class做示例: 1: public class Person 2: { 3: public int Age { get; set; } 4: 5: public Person() 6: { 7: Age = 1; 8: Console.WriteLine("Created"); ...
阅读全文
.net各版本反射多种方法介绍
摘要:本文主要以CSharp语言为主,首先假设这样简单的CLASS为示例: 1: public class Person 2: { 3: public void Action() 4: { 5: Console.WriteLine("Run"); 6: } 7: } 在.net framework 1.1 到2.0 下,我们用CSharp常规反射调用Action方法如下: 1: [Test] 2: p...
阅读全文
使用DebugView小工具调试已部署的.net程序
摘要:DebugView for Windows能够捕捉Debug输出的信息在本地的操作系统上。如何你需要调试程序有网络访问推荐使用Wireshark和监听HTTP的工具Fiddler。 下载下来是一个ZIP包,解开它运行后,然后我们Build下面的代码到一个控制台程序,接着运行它。 1: static void Main(string[] args) 2: { 3: TraceWriteLine("...
阅读全文
ASP.NET Web应用程序中用Windows Server AppFabric Cache配制Session State
摘要:阅读这篇POST时,您需要了解Asp.net web应用程序,Windows Server AppFabric Cache. 如您不熟悉可以先阅读Windows Server AppFabric Cache 介绍一。 打开Cache PowerShell 控制台(Start –> Windows Server AppFabric –> Caching Administration Windows...
阅读全文
Windows Server AppFabric Cache 介绍一
摘要:我们知道现在基于net 4.0的缓存可以使用Windows Server AppFabric,今天来介绍一下。首先我的环境是Win7 Enterprise,安装II7相关组件。下载安装包,或通过 Web Platform Installer 进行安装也可以了。 接下来是配置Windows Server AppFabric Cache,有一个向导也很简单,此处我们选择默认的SQL Server A...
阅读全文
C#实现一个简单的REST service
摘要:在这篇POST里我们将实现一个简单的REST service,首先创建一个类库项目RESTService.Lib,你需要引用System.ServiceModel,与 System.ServiceModel.Web。接着我们定义一个URI的模板: 来看实现类,传入一个数字返回另一个随机字符串,这里是为了演示目的,实际环境中可能是查询数据库。 关于ServiceBehavior你可以参考MSDN。...
阅读全文
.net中JSON序列化Object指定属性两种方法
摘要:我们在程序中经常需要对一个Object做序列化操作,有时希望对特别的属性,标记特别的名称。有几种方法可以实现: 1. 使用JSON.NET类库 这是一个开源的类库,您可以从这里下载。它支持格式化,自定义等功能。我们通常在需要序列化属性下标记即可: 这个属性最后序列化的名字是text.2. 在.net 4.0 也提供一个DataMember特性类似它,你可能在WCF中有看到过: 后面发现JSON...
阅读全文
.net2.0中WebService在序列化xml数据Generic字典类型的问题
摘要:最近在公司代码中一个WEB SERVICE 看到使用字典类型做为返回类型,如下: DEBUG,出现下面的Exception:Cannot serialize interface System.Collections.Generic.IDictionary`2[[System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyT...
阅读全文
int.Parse与Convert.ToInt32区别
摘要:这两个方法我们经常在使用,但是它们之间有什么区别呢,下面的代码让你比较清晰的明白区别所在: 区别就是Convert.ToInt32(string) 方法遇到空时会返回0,而Int.Parse则会Throw Exception. 我们还可以使用Int32.TryParse方法更加安全。希望这篇POST对您开发有帮助。作者:Petter Liu 出处:http://www.cnblogs.com/w...
阅读全文
通过System.Management获取操作系统信息
摘要:引用System.Management.dll 我们能轻松获取系统信息。看如下代码: 结果是:Microsoft Windows 7 Enterprise 6.1.7600Microsoft CorporationC:\Windows00000-000-0000000-000004.0.30319.1以上是我的本地操作系统信息,序列号也能拿到. 关键的ManagementObject 。希望对您编...
阅读全文