
C#
边城的刀声
这个作者很懒,什么都没留下…
展开
-
值类型初始化
话说值类型在声明的时候就会初始化为0,比如int32 i 它就会被初始为0那么看下段的代码static void Main(string[] args){ Int32 i; Console.Write(i);} 会出现什么结果呢?结果是编译错误。那这是不是矛盾了呢?来看另一个例子 public class Initor { public Int32 i; } static void Main(string[] args)原创 2010-08-03 21:42:00 · 1218 阅读 · 1 评论 -
[ASP.NET]如何在一个网站中定时执行一个任务
public class MyClass{ private static Timer timer; //声明一个全局的timer. static MyClass() { timer = new Timer(MyMethod, null, new TimeSpan(0, 0, 30), new TimeSpan(0, 5, 0)); //30秒后启动,每隔原创 2012-04-01 16:44:10 · 2133 阅读 · 0 评论 -
[.NET]使用FactoryManager为遗留的静态方法作单元测试
当一个遗留的静态方法中使用了诸如依赖于数据库或WebService之类的外部资源时,为了确保单元测试快速的运行,可以使用FactoryManager来进行依赖分离,而如果是实例方法的话,则可以用构造函数或Setter方法进行设置(这里不举例)。惯例,直接上代码:public class ProductRepositoryFactoryManager{ public static I原创 2012-04-26 09:35:48 · 1184 阅读 · 0 评论 -
[.NET]根据某个数值,获取Flags枚举所代表的所有值
public static IEnumerable GetEnumValuesFromFlagsEnum(Int32 value) where T : struct { T[] values = (T[])Enum.GetValues(typeof(T)); foreach (var itemValue in values)原创 2012-03-31 18:16:28 · 2938 阅读 · 0 评论 -
.NET 自定义配置集合
直接上代码: public class MySection : ConfigurationSection { private const String collectionProertyName = ""; //如果 ConfigurationProperty 的某个实例为默认集合,则此实例的名称将被自动定义为一个空字符串 [Configur原创 2012-04-23 18:21:25 · 1203 阅读 · 1 评论 -
[浏览器]IE下载中文文件名乱码问题
在使用IE下载包含中文文件的时候,会出现乱码(在Chrome下没有此问题),解决方法是使用UrlEncode,如下public static void DownloadExcel(HSSFWorkbook book, String fileNamePre) { var stream = new MemoryStream();原创 2012-05-08 11:07:13 · 11181 阅读 · 3 评论 -
获取IEnumerable中元素的类型
//using System.Linq;Type type = objects.AsQueryable().ElementType;原创 2012-08-07 10:55:12 · 2499 阅读 · 0 评论 -
继承TreeNode,使其在客户端显示Value
asp.net 中的TreeView控件,如果把它TreeNode的SelectAction属性设置成TreeNodeSelectAction.None,也就是不进行回发,那么 dopostback也就在客户端不存在了,对应的Value也不会呈现在客户端,这对于想通过js在客户端编程造成了困难,解决的方法是,继承现有的TreeNode来解决这个问题public class ValueTree原创 2012-07-25 13:28:51 · 1998 阅读 · 1 评论 -
ActiveDriectory中的各种Name
名称唯一约束修改方式描述sAMAccountName全局唯一直接修改windows帐户DisplayName 没有唯一约束直接修改显示名称DistinguishedName全局唯一只读路径cn在某个节点下唯一,但不是全局唯一Rename()和name一致name在某个原创 2012-08-09 13:56:55 · 750 阅读 · 0 评论 -
asp.net ajax跨二级域代理页面
/// /// Ajax跨二级域代理页面 /// public class AjaxCrossDomainProxy : IHttpHandler { public void ProcessRequest(HttpContext context) { context.Response.Cache.SetNo原创 2012-11-28 10:49:38 · 1171 阅读 · 0 评论 -
一个具有缓存数据功能的HttpWebRequest工具类
背景:一个公共站点中的数据,供其它子站点共享,为了提高性能,简单实现了Http 1.1的缓存功能特点:可以缓存Html数据到内存中;缓存具有过期时间;缓存过期后,通过再确认的方式来决定是否更新缓存;浏览器刷新后,无论缓存是否过期都会强制再验证;未实现的包括:不能通过no-store来强制清空缓存,缓存再确认时没有验证Etag/// /// 启用缓存的HttpRequest原创 2012-11-28 16:44:00 · 3457 阅读 · 0 评论 -
通过IRequiresSessionState确认页面是否关闭了Session
在页面的Page命令中,可以通过EnableSessionState="false"来关闭Session,但如果想在代码中想确认当前页面是否启用了Session,确没有相应的属性或方法,实现方法是通过当前页面是否实现了IRequiresSessionState,这个在VS中当然是看不到的,只有在代码被预编译后才会看到,使用aspnet_compiler预编译网站后,通过IL Dasm查看预编译后的原创 2013-01-21 17:27:18 · 1958 阅读 · 0 评论 -
使用NotePad++ 运行轻量级的C#代码
有时候想实验个C#代码中的小特性,不得不打开VisualStudio,但这实在是太重量级了,如果电脑性能一般的话,光打开VS就得等半天,这里我们可以使用notepad++来运行在notepad++中新建文件hello.cs,F5运行,配置命令行cmd /K C:\windows\Microsoft.NET\Framework\v4.0.30319\csc.exe /t:exe /out原创 2013-03-05 09:54:50 · 9084 阅读 · 0 评论 -
使用NPOI操作Excel时,给一列所有的单元格加上下拉框的输入限制
public static HSSFDataValidation CreateListConstaint(this HSSFWorkbook book, Int32 columnIndex, IEnumerable values) { var sheetName = "_constraintSheet_"; HSSFSheet she原创 2012-03-27 16:12:51 · 7300 阅读 · 0 评论 -
System.Data.DataRelation学习笔记
DataRelation 对象执行两种功能:它可使与正使用的记录相关的记录可用。如果在父记录 (GetChildRows) 中,则它提供子记录;如果正使用子记录 (GetParentRow),则它提供父记录。它可强制约束的引用完整性,如删除父记录时删除相关的子记录。以下代码为此两种功能的演示: /// /// /// [TestFixture] public class DataRelationStudy { [Test]原创 2010-08-07 19:48:00 · 6463 阅读 · 0 评论 -
快速启动ILDasm查看当前项目的IL代码
最近在研究IL代码,所以经常在VS中写了C#代码,需要用ILDasm查看下它的IL代码,但每次手工打开实在麻烦,所以这里推荐下使用外部程序:依次打开菜单“工具”-“外部工具”,在“外部工具”对话框中点击“添加”按钮在“标题”输入框中输入:IL在“命令”输入框中输入:“C:/Program Files/Microsoft SDKs/Windows/v6.0A/bin/ildasm.exe原创 2011-06-15 16:26:00 · 1740 阅读 · 0 评论 -
C#中Decimal保存到SQL数据库中时的宽度问题
如果把某个用于输入一个Decimal类型的文本框的MaxLength设置成16位的话,然后在C#中使用Decimal.Parse解析是没问题的,但在保存到数据库中一个字段类型为Decimal(18,4)的时候,确出现了溢出错误,改成14位,则一切正常,所以在使用一个Deicmal存入数据库的时候,不仅要考虑.NET中的Decimal.Parse验证,还得考虑SQL中的溢出问题原创 2011-06-14 16:47:00 · 2607 阅读 · 0 评论 -
尽量使用ToUpper比较,避免使用ToLower
在编码时尽量使用ToUpper比较,避免使用ToLower,因为微软对ToUpper进行了优化,以下为测试结果: public void TestToLower() { Stopwatch watch = new Stop原创 2011-07-15 09:15:47 · 3184 阅读 · 0 评论 -
获取用户的主要组名称
通过属性memberof可以获取用户的所有组,但除了主要组,不过可以通过primaryGroupID来获取,虽然它返回的是rid,但rid通过filter确取不回来,只要通过objectSid,但objectSid是个byte[]类型,所以通过filter也获取不到,最后只好通过原创 2011-07-14 17:14:18 · 1864 阅读 · 0 评论 -
使用ToUpperInvariant避免使用ToUpper
ToUpperInvariant使用不依赖于区域性进行转换,而ToUpper则使用了当前线程的CultureInfo,进行转换,所以性能会有所影响,以下为测试: [Test] public void TestInvariant()原创 2011-07-15 09:41:38 · 7280 阅读 · 0 评论 -
LINQ To SQL 之 Expression中如何定义String类型的GreaterThanOrEqual
Expression中如何定义String类型的GreaterThanOrEqual原创 2011-08-04 09:29:46 · 4518 阅读 · 0 评论 -
单元测试时引用文件
有这样一个类,用来验证用户上传的excel文件的合法性,那么来做这个类的单元测试,这里的单元测试是用的VS自带的测试框架,没有用NUnit等第三方的测试框架。步骤如下:1.在测试项目中增加一个excel文件,以模仿用户上传的excel2.设置此excel文件的属性 "原创 2011-10-11 09:09:39 · 1671 阅读 · 0 评论 -
代码覆盖率收集错误:Visual Studio 性能和覆盖率记录引擎已在计算机上运行
在使用VS2008 Team版时1.在“代码覆盖率”选中当前要测试的组件2.调试某个测试3.点击“停止”以停止调试4.然后再重新运行测试这时候就会提示如下错误:代码覆盖率收集错误: Visual Studio 性能和覆盖率记录引擎已在计算机上运行。因此,测原创 2011-10-13 10:37:24 · 1199 阅读 · 0 评论 -
单元测试时,注意ClassCleanUp出现异常时的提示
通常在作单元测试时,只会关注某个测试是否通过,即单元测试是否变绿了但如果某个测试类中有ClassCleanUP的方法,就要注意整个测试运行完后,测试结果上左侧的提示了,如下图:但如果在ClassCleanUP方法执行错误后,会出现如下的提示:,打开错误详细信息原创 2011-10-19 16:26:07 · 2104 阅读 · 0 评论 -
单元测试时如何模拟HttpContext
在一些方法中使用了HttpContext.Current. class Log{ public void Save() { _name = HttpContext.Current.User.Identity.Name; //需要用到Current.User _logDal.Save(this); //_logDal负责持久化原创 2011-10-25 09:20:52 · 4540 阅读 · 0 评论 -
在VisualStudio 2012中通过SmallSharp压缩js及修改web.config
$(SampleFilesDir)\Web.config <UpdateWebConfig WebConfigPath="web.config" Debug="fals原创 2013-07-30 14:53:43 · 2196 阅读 · 0 评论