实现动态的XML文件读写操作
摘要:实现动态的XML文件读写操作(依然带干货)前言 最近由于项目需求,需要读写操作XML文件,并且存储的XML文件格式会随着导入的数据不同而随时改变(当然导入的数据还是有一定约束的),这样我们要预先定义好XML文件的格式就不太现实了,如何实现不管导入的数据如何变化,我都能正确的把数据解析出来,这就是要实现的动态的XML文件读写操作!如果大家有更好的方式欢迎交流!具体实现 本文所实现的读写XML文件是使用序列话的方式,具体博文请参考:http://www.cnblogs.com/fish-li/archive/2013/05/05/3061816.html,当然如果只是序列化操作XML文件的...
阅读全文
用T4消除代码重复,对了,也错了
摘要:用T4消除代码重复,对了,也错了背景我需要为int、long、float等这些数值类型写一些扩展方法,但是我发现他们不是一个继承体系,我的第一个思维就是需要为每个类型重复写一遍扩展方法,这让我觉得非常不爽,但是我还是不情愿的写了,等int和long写完后,我突然觉得我可以让T4帮我写,而且C#支持部分类,就更爽了。用T4实现模板(写代码的代码) 1 2 3 4 5 6 7 using System; 8 using System.Collections.Generic; 9 using System.Linq;10 using System.Text;11 using System...
阅读全文
VS2012 单元测试之泛型类(Generics Unit Test)
摘要:VS2012 单元测试之泛型类(Generics Unit Test)关于单元测试,如果不会用可以参照我的上篇博文————在Visual Studio 2012使用单元测试首先分享一篇博文,[Visual Studio] 开启Visual Studio 2012通过右键菜单创建单元测试(Unit Test)。泛型有两种,一般泛型与类型约束泛型,在对包含泛型的方法进行单元测试中也可以这么分,详情可参阅http://msdn.microsoft.com/en-us/library/vstudio/ms243401.aspx 。从该页面可以知道,关于泛型的单元测试,微软类库(Microsoft.Vi
阅读全文
C#操作AD及Exchange Server总结
摘要:C#操作AD及Exchange Server总结这篇博客的目的:根据亲身项目经历,总结对AD及Exchange Server的操作,包括新建AD用户,设置密码,为AD用户创建邮箱等。本文完全原创,转载请说明出处,希望对大家有用。文档目录:测试环境及需求简述对AD操作引入DLL及方法简述新增OU或Security Group新建AD User添加用户到组或从组中删除用户用户信息更新Enable/Disable用户账号对Exchange Server操作为AD用户新建邮箱Enable/Disable用户邮箱总结归纳一、测试环境及需求简述1、测试环境服务器:windows server 2008R2
阅读全文
C#彻底解决Web Browser 跨域读取Iframes内容
摘要:C#彻底解决Web Browser 跨域读取Iframes内容用C#winform的控件webbrowser读取网页内容,分析一下数据,做一些采集工作。如果是同一个域名下面还是好办的,基本上用HtmlAgilityPack就完全可以解决问题。但是现在遇到跨域问题,比如我需要打开页面上存在的广告联盟的地址,进行保存。这就是牵扯到跨域。一般的错误是:拒绝访问。"Accessisdenied.(ExceptionfromHRESULT:0x80070005(E_ACCESSDENIED))"。因为你没有在这个网站去修改另一个网站数据的权利。怎么办?很困恼吧。现在就告诉大家一个好办
阅读全文
C# ORM—Entity Framework 之Code first(代码优先)(二)
摘要:C# ORM—Entity Framework 之Code first(代码优先)(二)一、Entity FrameworkCode first(代码优先)使用过程 1.1Entity Framework 代码优先简介 不得不提Entity Framework Code First这个介于牛A与牛C之间的功能,从4.1 开始的Code first使程序员,使软件开发流程进入一个更加方便快捷的时代。 Code First是EntityFramework实现ORM的一种有利手段,因为传统编程方式都是先建立数据库,然后根据数据库模型为应用程序建模,再进行开发;CodeFirst代码优先...
阅读全文
一步步教你读懂NET中IL(附带图)
摘要:一步步教你读懂NET中IL(附带图)接触NET也有1年左右的时间了,NET的内部实现对我产生了很大的吸引力,在msdn上找到一篇关于NET的IL代码的图解说明,写的挺不错的。个人觉得:能对这些底部的实现进行了解和熟练的话,对以后自己写代码是有很大帮助的,好了,废话不多说,现摘抄如下:.NET CLR 和 Java VM 都是堆叠式虚拟机器(Stack-Based VM),也就是說,它們的指令集(Instruction Set)都是採用堆叠运算的方式:执行时的资料都是先放在堆叠中,再进行运算。JavaVM 有約 200 個指令(Instruction),每個指令都是 1 byte 的 opcod
阅读全文
Winform开发框架之插件化应用框架实现
摘要:Winform开发框架之插件化应用框架实现支持插件化应用的开发框架能给程序带来无穷的生命力,也是目前很多系统、程序追求的重要方向之一,插件化的模块,在遵循一定的接口标准的基础上,可以实现快速集成,也就是所谓的热插拔操作,可以无限对已经开发好系统进行扩展,而且不会影响已有的功能,不在需要的模块,通过修改配置移除即可。我的Winform开发框架一直以来,来源于多年的项目积累以及客户的反馈,已经具备了众多很好的特性以及相关的模块组合,为了更好拥抱变化,提高基于Winform开发框架基础上开发新系统的效率,以及为框架融入更多好的特性,故此把我的Winform开发框架在原来的基础上进行扩展,实现基于插件
阅读全文
面试都爱问的委托和事件(纠正)
摘要:面试都爱问的委托和事件(纠正)这篇博客是我昨天写的,文中的观点有些问题,后经过网友留言和个人学习发现错误,原文还是保留,更改补在后面,不怕贻笑大方,唯恐误人子弟。不知道还能不能放在首页,让被误导的同学再被反误导一次。一、原文 几乎所有的面试题都会问:事件是委托吗,说说委托和事件的联系和区别?每次答这个题都很蛋疼,因为把它们的关系说简单了就描述不准确,想说清楚就不是一两句话的事了。我通常在回答中加这么一句:委托与事件的关系好比字段与属性的关系。很多人理解它们的关系时也做这样的类比,虽然简单一句话概括了它们的关系,但总不能让我感到满意。1、委托与事件到底什么关系? 当我们谈委托与事件的关系时,是说
阅读全文
深入挖掘.NET序列化机制——实现更易用的序列化方案
摘要:深入挖掘.NET序列化机制——实现更易用的序列化方案.NET框架为程序员提供了“序列化和反序列化”这一有力的工具,使用它,我们能很容易的将内存中的对象图转化为字节流,并在需要的时候再将其恢复。这一技术的典型应用场景包括[1]:应用程序运行状态的持久化;在应用程序之间通过剪切板传送对象;创建对象复本,以隔离用户操作造成的影响;在网络间传送对象。然而,.NET框架提供的默认序列化行为也存在着有诸多限制,尤其是在版本控制方面——比如一个使用SerializableAttribute标记,而未实现ISerializable的类型,在通过重构修改了某个字段的名称后,再反序列化之前的序列化结果时就会失败。
阅读全文
ISupportInitialize的用处
摘要:【译】ISupportInitialize的用处【译】ISupportInitialize的用处注:本文是对How ISupportInitialize Can Help的翻译。原文作者编写了Sharpgl,这篇文章是对制作Winform控件过程中的一个知识点的小总结。我只按照理解的需要简单翻译一下,仅供参考。我最近才发现ISupportInitialize这个接口。在开发复杂一点的winform控件的时候它实在是很有用。MSDN上有对ISupportInitialize的介绍,我这里只说一下在什么情况下用它发挥作用。问题我要做一个比较复杂的控件“OpenGLControl”,它能够在winf
阅读全文
Entity Framework 之 Code First
摘要:使用NuGet助您玩转代码生成数据————Entity Framework 之 Code First[前言] 如果是Code First老鸟或者对Entity Framework不感兴趣,就不用浪费时间往下看了。记得09年第一次接触ORM————Linq2Sql,从此对她的爱便一发不可收拾,一年后,新的工作用上了EF,突然感觉彷佛是生活中出现了一个与你的爱人一样优秀但却没有你爱人缺点的Girl,真的难以抗拒。后来又因为各种缘故,接触EF越来越少,直到最近没那么忙才重拾EF。关于EF我就不废话了,如果是EF新人(对Code First而言我也绝对是个新人),个人觉得还是从Code First去学
阅读全文
解析.NET 许可证编译器 (Lc.exe) 的原理与源代码剖析
摘要:解析.NET 许可证编译器 (Lc.exe) 的原理与源代码剖析许可证编译器 (Lc.exe) 的作用是读取包含授权信息的文本文件,并产生一个可作为资源嵌入到公用语言运行库可执行文件中的 .licenses 文件。在使用第三方类库时,经常会看到它自带的演示程序中,包含有这样的Demo许可文件Infragistics.Win.Misc.UltraButton, Infragistics2.Win.Misc.v11.1, Version=11.1.20111.2009, Culture=neutral, PublicKeyToken=f8b58b62b52fdf31Infragistics.Win
阅读全文
Entity Framework with NOLOCK
摘要:在SqlServer中,频繁在同一个数据库表同时进行读写的时候,会存在锁的问题,也就是在前一个insert、update、delete事务操作完毕之前,你不能进行读取,必须要等到操作完毕,你才能进行select操作,目的是为了防止并发操作而读到脏数据,在SQL语句中,如果能容忍这种情况、加快查询速度,可以忽略锁进行查询:select * from [User] with(nolock) 但是如果你项目中使用EntityFramework,可以使用下面这段代码进行nolock查询:需要添加System.Transactions程序集的引用//declare the transaction opt
阅读全文
如何正确看待Linq的DistinctBy扩展和ForEach扩展
摘要:如何正确看待Linq的DistinctBy扩展和ForEach扩展在微软标准的Linq中,并没有DistinctBy扩展和ForEach扩展,但在平时使用工作中却又经常需要使用到这两个功能,照理来说,微软在Linq中应该包含这两个扩展才对,可事实上为什么并没有呢?本文我就来说说自己对这两个扩展的理解!关于DistinctBy扩展顾名思义,DistinctBy扩展就是根据一个键值进行唯一性的筛选,将有重复键值的元素剔除,仅保留一个!当然Linq中有Distinct扩展,但其功能简直是弱爆了!用过的同志相信都对Distinct扩展吐槽无数遍了吧!如果你要使用Distinct扩展实现Distinct
阅读全文
C# 加密总结 一些常见的加密方法
摘要:C# 加密总结 一些常见的加密方法一散列数据代码如下:?privatestaticstringCalculateSHA512Hash(stringinput){byte[] inputBytes = Encoding.UTF8.GetBytes(input);SHA512Managed sha512 = newSHA512Managed();byte[] outputBytes = sha512.ComputeHash(inputBytes);returnConvert.ToBase64String(outputBytes);}原始散列对于彩虹表来说也存在漏洞,在彩虹表中,表内的每一条记录都是
阅读全文
闭包、lambda和interface
摘要:闭包、lambda和interface人们都很喜欢讨论闭包这个概念。其实这个概念对于写代码来讲一点用都没有,写代码只需要掌握好lambda表达式和class+interface的语义就行了。基本上只有在写编译器和虚拟机的时候才需要管什么是闭包。不过因为系列文章主题的缘故,在这里我就跟大家讲一下闭包是什么东西。在理解闭包之前,我们得先理解一些常见的argument passing和symbol resolving的规则。首先第一个就是call by value了。这个规则我们大家都很熟悉,因为流行的语言都是这么做的。大家还记得刚开始学编程的时候,书上总是有一道题目,说的是:void Swap(i
阅读全文
代码大全 MSIL语言程序设计
摘要:代码大全 MSIL语言程序设计.NET平台的编译器会将高级语言(C#,VB.NET,F#)编译成MSIL(微软中间语言)格式。熟悉MSIL语言,可以读懂一些加密程序混淆过的算法,这些算法几乎不能还原成高级语言,但是可以还原成MSIL语言。也可以知道一些高级语言之外的关于CLR的特性,比如多模块程序集,全局静态方法等等。一些.NET保护加密程序也是运用MSIL平台的特性。阅读本篇文章,假设您已经对这个语言有基本的了解,我会列举这个语言的基本语言应用例子,供参考。1 Hello world.method static void main(){ .entrypoint .maxstack...
阅读全文
读取的XML节点中带有冒号怎么办?
摘要:读取的XML节点中带有冒号怎么办?昨天,编程读取XML的时候,遇上了类似下面的一段XML aaaa起初没有特别的留意,于是乎就像平时读取XML一样使用了。 var ele = from item in xDoc.Descendants("a:book") select item;但是,运行报错,不允许传入冒号:之类的字符,后来查阅资料发现,节点中,冒号前的a代表是的命名空间,冒号后的才是根节点名称。在Root节点中,也对命名空间进行了声明xmlns:a="http://ww.abc.com/" ,知道了这么一回事后,再来看看如何去读取,正确的读取是: X
阅读全文
自制AutoMapper实现DTO到持久层Entity的转换
摘要:自制AutoMapper实现DTO到持久层Entity的转换项目中经常涉及到页面DTO更新,保存到数据库的操作,这就必然牵扯到DTO和持久层对象的转换,常见的第三方库有:java:dozer.net: AutoMapper看到AutoMapper已经许久没更新了,而且项目中没必要用这么大的东西,于是自己实现了一个简易DTO到Entity的转换器。实现的功能自定义的AutoMapper主要实现了如下几点功能:1.DTO字段忽略转换[AutoMapping(Ignore=true)]public DateTime CreateTime { get; set; }2.DTO字段和Entity的强制映
阅读全文