随笔分类 -  CSharp

.netCore HttpClient正确用法
摘要:.netCore HttpClient正确用法 HttpClient 这个组件从.net framework延续到.net Core,在使用时稍微不注意,将引发性能问题。实际上文档已提及HttpClient 用于在应用程序的整个生存期内实例化一次并重复使用。 HttpClient is intend 阅读全文
posted @ 2022-02-12 16:38 PetterLiu 阅读(1703) 评论(0) 推荐(0) 编辑
dotnetcore执行shell脚本
摘要:我们可以使有dotnetcore跨平台的特性,优雅的实现在dotnetcore执行shell (bash). 代码如下:using System;using System.Collections.Generic;using System.Text;namespace hshoc{ using System.Diagnostics; public static class Sh... 阅读全文
posted @ 2019-12-08 22:23 PetterLiu 阅读(4126) 评论(0) 推荐(1) 编辑
一个LINQ风格的Replace扩展方法
摘要:在微软的.net framework框架中我们知道String有一个Replace的方法,今天我们来实现一个LINQ风格的基于集合Replace元素的扩展方法。首先来看一下,简单类图: 下面是主要代码片断: 1: /// <summary> 2: /// ReplaceExtensions which is LIN... 阅读全文
posted @ 2012-12-22 21:41 PetterLiu 阅读(1692) 评论(0) 推荐(0) 编辑
表达式树中递归方法
摘要:说到递归我们经常用阶乘来做演示,这里我们尝试用表达式树ExpressionTree实现它,假设您已经了解CSharp语言 /// <summary> /// Makes the factorial expression. /// </summary> /// <typeparam name="T">... 阅读全文
posted @ 2012-06-21 12:00 PetterLiu 阅读(1742) 评论(0) 推荐(0) 编辑
Linq中的Where与SkipWhile
摘要:本文将介绍Linq中的Where与SkipWhile的用法,有时我们容易混淆它们。下面来看一个简单的UnitTest: [TestMethod]public void TestSkipWhileAndWhereLinq(){ //arrange string[] names = { "Jalpesh", "Jayesh", "Tushar", "Tejas", ... 阅读全文
posted @ 2012-05-11 17:14 PetterLiu 阅读(3570) 评论(1) 推荐(1) 编辑
CSharp扩展方法应用之获取特性
摘要:例如在Asp.net MVC Web Application中的,我们想快速了解某个Action上是否有某个Attribute. 那我们可以使用这样的扩展方法: /// <summary>/// Gets the method./// </summary>/// <typeparam name="T">Type</typeparam>/// <param name="in... 阅读全文
posted @ 2012-02-25 15:44 PetterLiu 阅读(1705) 评论(0) 推荐(0) 编辑
.net中用Action等委托向外传递参数
摘要:一般我们可以使用ref,out达到向外传递参数目的。 Action<T>是一个特殊的委托,除了常规应用。我们还可以用它来实现简单地向外传递参数。直接看下面的UnitTest代码: 1: [TestMethod] 2: public void PassOutParametersUsingDelegate() 3: { 4: ... 阅读全文
posted @ 2011-12-27 18:16 PetterLiu 阅读(5729) 评论(0) 推荐(1) 编辑
Lazy<T>的应用之类内部字段与C#延迟加载
摘要:延迟加载主要应用在以下场景: 数据层 – ADO.NET或Entity Framework等ORM反射 – 加载assemblies, types, MEF 缓存对象,领域实体 下面以领域实体为例, 在实体中我们经常检查某个属性下字段是否为空引用. 如果是空的话,计算或填充这个字段. 像这样: 1: /// <summary> 2: /// Order 3:... 阅读全文
posted @ 2011-11-27 22:54 PetterLiu 阅读(4284) 评论(0) 推荐(0) 编辑
数据访问层的单元测试
摘要:数据访问层在分层结构,比较常见. 有时可能是数据访问模块. 假设数据访问层后端是数据库,那我们如何测试他们的呢? 有时实际这种测试是集成测试了.有时数据库里还有一些逻辑,触发器,约束等. 个人十分不建议把业务逻辑放在数据库里实现. 最常见的数据库表的操作create, read, update和delete(简称CRUD), 例如我们需要测试某个Add方法,在这个测试方法完成后, 希望这条测试数... 阅读全文
posted @ 2011-11-19 23:05 PetterLiu 阅读(4565) 评论(0) 推荐(0) 编辑
Memcached快递上手之C#
摘要:Memcached是开源高性能分布式缓存组件,目前已经广泛应用各类互联网领域. 具有多种语言的客户端开发包,包括:Perl/PHP/JAVA/C/Python/Ruby/C#/MySQL. 这此站点已经在使用YouTube,Reddit,Zynga,Facebook,Orange它. 看下面的图比较形象. 同样它也是扩平台的,今天我们来看windows下的服务端以及使用.net的客户端访... 阅读全文
posted @ 2011-10-01 09:17 PetterLiu 阅读(9168) 评论(4) 推荐(4) 编辑
用反射查找当前AppDomain中程序集的所有Attribute类型
摘要:前段时间园子有个人发一道面试题是这样的,找出.net framework 中的所有Attribute。通常这个问题需要指定范围的,下面让我们来实现一下查找当前AppDomain中程序集的所有Attribute,您可以举一反三,接下看下来的代码: 1: [TestMethod] 2: public void TestGetCurrentAppDomainAttribuesNameTree() 3:... 阅读全文
posted @ 2011-07-18 17:15 PetterLiu 阅读(1341) 评论(0) 推荐(2) 编辑
.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... 阅读全文
posted @ 2011-04-25 22:58 PetterLiu 阅读(1049) 评论(0) 推荐(0) 编辑
代码可读性提升之多条件判断语句
摘要:有时,看到类似这样的C#语句: 这里只有四个条件,假设这里有超过四个或更多时,那时代码转行时可读性就更差了。我们可以将上面的代码改成: 注意粗体部分的代码,这样看上去更容易阅读。你可增多更多的条件判读语句。实际情况下,还可以考虑Strategies来重构代码。 希望对您开发有帮助!作者:Petter Liu 出处:http://www.cnblogs.com/wintersun/ 本文版权归作者... 阅读全文
posted @ 2011-02-12 11:22 PetterLiu 阅读(1205) 评论(1) 推荐(1) 编辑
C#实现一个简单的REST service
摘要:在这篇POST里我们将实现一个简单的REST service,首先创建一个类库项目RESTService.Lib,你需要引用System.ServiceModel,与 System.ServiceModel.Web。接着我们定义一个URI的模板: 来看实现类,传入一个数字返回另一个随机字符串,这里是为了演示目的,实际环境中可能是查询数据库。 关于ServiceBehavior你可以参考MSDN。... 阅读全文
posted @ 2011-02-06 21:36 PetterLiu 阅读(16031) 评论(12) 推荐(0) 编辑
.net中JSON序列化Object指定属性两种方法
摘要:我们在程序中经常需要对一个Object做序列化操作,有时希望对特别的属性,标记特别的名称。有几种方法可以实现: 1. 使用JSON.NET类库 这是一个开源的类库,您可以从这里下载。它支持格式化,自定义等功能。我们通常在需要序列化属性下标记即可: 这个属性最后序列化的名字是text.2. 在.net 4.0 也提供一个DataMember特性类似它,你可能在WCF中有看到过: 后面发现JSON... 阅读全文
posted @ 2011-01-27 21:13 PetterLiu 阅读(5944) 评论(2) 推荐(0) 编辑
用扩展方法来为Enum类型加入业务逻辑
摘要:我们在开发经常要使用Enum类型,今天我们用扩展方法来为Enum类型加入业务逻辑. 有以下的代码: 然后写一个扩展方法: 好了,让我们来看如何使用: 代码很简单,希望对您有开发有帮助。作者:Petter Liu 出处:http://www.cnblogs.com/wintersun/ 本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留... 阅读全文
posted @ 2010-10-22 19:54 PetterLiu 阅读(2028) 评论(0) 推荐(1) 编辑
通过System.Management获取操作系统信息
摘要:引用System.Management.dll 我们能轻松获取系统信息。看如下代码: 结果是:Microsoft Windows 7 Enterprise 6.1.7600Microsoft CorporationC:\Windows00000-000-0000000-000004.0.30319.1以上是我的本地操作系统信息,序列号也能拿到. 关键的ManagementObject 。希望对您编... 阅读全文
posted @ 2010-10-15 14:32 PetterLiu 阅读(1543) 评论(0) 推荐(0) 编辑
无配置文件使用Enterprise Library Logging Application Block 4.1
摘要:以前曾经有同事问我,如何使用直接使用Enterprise Library Logging Application Block,而不需要写任何配置文件。我的回答是可以的。是的,今天让我们实现下。我们知道能常EntLib需要读取config中配置节信息,那我们可以在Code里传送相应的信息给它,看以下的代码: 注意,这里我们配置是使用RollingFlatFileTraceListener,也就是写磁... 阅读全文
posted @ 2010-09-24 12:22 PetterLiu 阅读(1102) 评论(0) 推荐(1) 编辑
使用Rex来生成字符串数组
摘要:我们在项目中,经常要使用正则表达式,现在有一个工具可以按正则表达式生成数据.正则表达式的语法忘记了吗?看这儿.如果你熟悉正则表达式 ,让我们进入正题.这个TOOL的名称叫Regular Expression Exploration. 你可以从这儿下载 .目前的版本是1.0 release. Rex是一个命令行工具, 具体用法可以在CMD下执行便可以看到用法,这个是.net的程序.我们可以引用它,然... 阅读全文
posted @ 2010-05-09 16:32 PetterLiu 阅读(739) 评论(6) 推荐(0) 编辑
用CSharp生成强密码
摘要:在很多场景下,我们需要一个强密码来保证可访问的数据或系统。如何检查你的密码安全级别,可以到Microsoft Online Safety – Using strong password这个网站。代码并不复杂,看下面片段代码: 例如我们用上面的CODE生成一个长度为8位密码是: ASSu#zO3,你可以写一个UI去显示它们了。希望对您有帮助。Author: Petter Liu http://win... 阅读全文
posted @ 2010-04-06 17:09 PetterLiu 阅读(1316) 评论(0) 推荐(1) 编辑