-串行化与反串行化
摘要:-串行化与反串行化 串行化是指存储和获取磁盘文件、内存或其他地方中的对象。在串行化时,所有的实例数据都保存到存储介质上,在取消串行化时,对象会被还原,且不能与其原实例区别开来。只需给类添加Serializable属性,就可以实现串行化实的成员。反串行化是串行化的逆过程,数据从存储介质中读取出来,并赋给类的实例变量。串行化能保存现有对象的所有状态,我想我们以前见过的一些游戏的角色账户中的dat文件应该就是被串行化的结果。我尝试了打开一个dat文件,果真得到了我需要的信息,一些角色的等级之类的信息果然在里面。 串行化对象,需要先将对象加上[Serializable],如: [Seriali...
阅读全文
WinForm中 事件 委托 多线程的应用
摘要:WinForm中 事件 委托 多线程的应用【以一个下载进度条为例】第一步:首先我们创建一个winfor的项目第二步:我们建一个窗体在一个窗体里面 打开一个另外的窗体 另外的窗体有一个按钮 点击后就开始下载 下载完成后 在注册窗体上面 显示下载完成(达到在一个窗体里面修改另外的一个窗体)?privatevoidbutton1_Click(objectsender, EventArgs e){FormLoad fl = newFormLoad();fl.Show();}第三步:完成下载窗体的进度条 private void button1_Click(object sender, E...
阅读全文
NPinyin 中文转换拼音代码
摘要:Mono 3.2 测试NPinyin 中文转换拼音代码C#中文转换为拼音NPinyin代码 在Mono 3.2下运行正常,Spacebuilder 有使用到NPinyin组件,代码兼容性没有问题。using System;using System.Collections.Generic;using System.Text;using NPinyin;namespace NPinyinTest{ class Program { static void Main(string[] args) { string[] maxims = new string[]{ ...
阅读全文
ADO.NET Entity Framework CodeFirst 如何输出日志(EF 5.0)
摘要:ADO.NET Entity Framework CodeFirst 如何输出日志(EF 5.0)ADO.NET Entity Framework CodeFirst 如何输出日志(EF4.3)用的EFProviderWrappers ,这个组件好久没有更新了,对于SQL执行日志的解决方案的需求是杠杠的,今天给大家介绍一个更好的组件Clutch.Diagnostics.EntityFramework,可以通过Nuget 获取:这个框架定义了一个接口 IDbTracingListener:namespace Clutch.Diagnostics.EntityFramework{ public .
阅读全文
像Linq一样来使用Graphics
摘要:像Linq一样来使用GraphicsLinq的链式编程用起来总是那样畅快淋漓,可惜在C#中并不是每时每刻都能有这么畅快的感觉,其中使用Graphics的时候就是,每次用Graphics绘制大量图形时尤其如此。GDI+的API功能很强大,但是在实际编码中,很多重复性的工作总是让我感觉到用起来很繁琐,于是我就设计了这样一个类库,将C#中的Graphics类进行了二次封装,让其可以和Linq一样,用起来“如沐春风”。先来看一段简单的示例代码吧。下面代码就是在一个窗体上绘制一系列图形,可以看出和原来的Graphics相比,编码量更小,代码也更优雅。 1 private void Form1_Paint
阅读全文
EF里Guid类型数据的自增长、时间戳和复杂类型的用法
摘要:EF里Guid类型数据的自增长、时间戳和复杂类型的用法通过前两章Lodging和Destination类的学习,我们基本已经知道EF是怎么玩的了。文章的开头提示下:下载源码也要跟着文章的思路走。我写demo为了后面演示效果,前面代码有些是注释了的,请按照文章讲解的顺序先后释放注释。I.EF里Guid类型数据的自增长现在新添加一个Trip旅行类: /// /// 旅行类 /// public class Trip { public Guid Identifier { get; set; } public DateTime StartD...
阅读全文
Entity Framework中的Identity map和Unit of Work模式
摘要:Entity Framework中的Identity map和Unit of Work模式阅读目录:一、什么是Identity map模式二、关于Identity map模式的验证示例三、Unit of Work 模式四、总结和注意的问题一,什么是Identity map模式Identity map是EF获取和缓存数据的模式。Identity map模式指的是任何数据都只会被加载一次,以map的形式缓存,以唯一的identity来再次获取这些数据。在EF中,就是在一个Context的生命周期中,所有查询过的数据都会缓存到Context的local中缓存。当再次访问这些数据的时候,就会以主键(i
阅读全文
接口和类 反射的差异性
摘要:.NET接口和类 反射的差异性发现1 背景在项目中使用反射,反射出某类型的所有属性(Property)和对应的属性值。起初为了性能考虑在模块首次加载就反射类型的所有属性并将其存入字典。根据一般的编程规范——基于接口编程,所以首次传入的反射类型是一个接口。所以程序必然出现了异常否者就没有此文了。2 重现实验代码代码其实很简单,主要是比较接口反射和类反射的不同interface ILevel0{ string LevelZero { get; set; }}interface ILevel1 : ILevel0{ string LevelOne { get; set; }}class Base..
阅读全文
.NET程序集1
摘要:谈谈.NET程序集(一)谈谈.NET程序集(一)The Assembly in .NETby 唐小崇http://www.cnblogs.com/tangchong在.NET出现之前, Windows的程序有一些非常困扰人的问题:1.当安装一个新的应用程序,有些时候会发现,它莫名其妙地损坏了已安装的应用程序(事实上是在系统的Win32文件夹内添加了与之前重名的dll文件,导致该dll被覆盖)。这种困境被称大家称为“DLL灾难”。2.大部分的程序安装会影响到所有的系统部件。比如:要在不同的位置拷贝文件,要在注册表中添加信息。这个问题在于不能将应用程序作为一个单一的实体,这同时也导致了程序不便于拷
阅读全文
.NET:再论异常处理,一个真实的故事
摘要:.NET:再论异常处理,一个真实的故事背景关于是使用枚举或布尔类型来表示方法执行状态,还是使用异常,可以参考这里的文章:http://www.google.ee/search?q=site%3Awww.cnblogs.com%2Fhappyframework%2F%20%E5%BC%82%E5%B8%B8。今天贴出一个真实的场景(一个朋友重构之前和之后的代码)供大家参考。一个朋友的示例重构前重构后示例分析重构前使用枚举或布尔类型来表示方法执行状态,导致程序中出现了大量的if(xxx){ //异常流程处理 },这部分代码会充斥到所有地方,程序中包括了对异常路径的处理,随着调用栈的深度增加,编程更
阅读全文
C#制作高仿360安全卫士窗体2
摘要:C#制作高仿360安全卫士窗体继上次C#制作高仿360安全卫士窗体发布之后响应还不错,我的博客放肆雷特也来了不少的新朋友,在这里先谢谢大家的支持!我自己也反复看了一下觉得对不起大家,写的非常乱而且很少文字介绍。在这里先说明一下,我是一个纯粹想搞技术的,文笔较差。我也想锻炼自己所以才会慢慢的将自己的所学分享出来。一来可以锻炼自己的文笔,二来可以分享知识留给像我一样喜欢这些东西的朋友。所以以后如果缺少介绍和说明,请大家多多补充指正,相互提高。下面进入主题。 上一篇主要讲的如何绘制一个按钮,那么今天讲解如何绘制窗体。之前也说过,先制作按钮的作用是可以将按钮用到窗体上面那些系统按钮如最大化、最小化、关
阅读全文
GPS定位,经纬度附近地点查询–C#实现方法
摘要:GPS定位,经纬度附近地点查询–C#实现方法 目前的工作是需要手机查找附近N米以内的商户,功能如下图数据库中记录了商家在百度标注的经纬度(如:116.412007, 39.947545),最初想法 以圆心点为中心点,对半径做循环,半径每增加一个像素(暂定1米)再对周长做循环,到数据库中查询对应点的商家(真是一个长时间的循环工作)上网百度类似的文章有了点眉目大致想法是已知一个中心点,一个半径,求圆包含于圆抛物线里所有的点,这样的话就需要知道所要求的这个圆的对角线的顶点,问题来了 经纬度是一个点,半径是一个距离,不能直接加减终于找到想要的文章http://digdeeply.org/archi..
阅读全文
页面缓存OutputCache
摘要:更新页面缓存OutputCache为什么要使用OutputCache 我认为OutputCache是最简单的缓存技术了,它针对的是页面级别的,简单的一条指令就可以达到缓存的效果,有效的减轻服务器的压力和减少带宽,对于网站一些不会频繁更新内容的页面,我们可以使用OutputCache来提供性能。为什么要更新OutputCache 作为网站的管理者,肯定要赋予他控制网站每一个部分的能力,假如网站要更新一个内容,而OutputCache还没有失效,难道要重启站点来生效吗?这时候,一个更新OutputCache的功能就显得很有必要了。如何更新OutputCache 一、 webForm首先,我...
阅读全文
Lambda应用模式
摘要:Lambda应用模式前言在使用 Lambda 表达式时,我们常会碰到一些典型的应用场景,而从常用场景中抽取出来的应用方式可以描述为应用模式。这些模式可能不全是新的模式,有的参考自 JavaScript 的设计模式,但至少我看到了一些人为它们打上了名字标签。无论名字的好与坏,我还是决定给这些模式进行命名,至少这些名字很具有描述性。同时我也会给出这些模式的可用性、强大的部分和危险的部分。提前先说明:绝大多数模式是非常强大的,但有可能在代码中引入些潜在的 Bug。所以,慎用。目录导航回调模式 (Callback Pattern)函数作为返回值 (Returning Functions)自定义函数 (
阅读全文
web开发下的各种下载方法
摘要:web开发下的各种下载方法利用TransmitFile方法,解决Response.BinaryWrite下载超过400mb的文件时导致Aspnet_wp.exe进程回收而无法成功下载的问题。 代码如下: Response.ContentType = "application/x-zip-compressed"; Response.AddHeader("Content-Disposition", "attachment;filename=z.zip"); string filename = Server.MapPath("Do
阅读全文
继承control的自定义TextBox
摘要:继承control的自定义TextBox 下面来介绍一下本人写的一个自定义的textbox,首先说一下写这个控件遇到的几个难点:第一、关联输入法;第二、画字符串和焦点线 先随便上两张效果图吧: 下面这三个类是来自于网络某位高人的,不记得名字了,拿来用,代码看了一下,给有些地方没注释的加上了注释。 View Code/// /// 提供Unmanaged方法处理Windows Message并接收输入法的输入信号。 /// public class ImeWinMessageHandler { private Control _tarForm...
阅读全文
新版C#编译器关于函数闭包
摘要:新版C#编译器关于函数闭包的一处更改在VisualBasic.NET中,如果你写下类似下面的代码:PublicSubTest()Fori=0To100Dimfunc=Function(x)x*iNextEndSubVisualStudio会给出一个警告,说在lambda表达式(即匿名函数)中直接使用循环变量可能导致意料之外的结果,建议程序员先将循环变量复制一份,然后再使用。直接使用循环变量究竟会产生什么意外结果呢?本人并没有用VB.NET尝试过,但是在多年的C#开发中屡次碰到类似问题,以至于向下属定下规矩:循环变量用于匿名函数必须复制一份。在C#中,在匿名函数中直接使用循环变量并不会像VB.N
阅读全文
EF Code First 初体验
摘要:EF Code First 初体验Code First 顾名思义就是先代码,再由代码生成数据库的开发方式。废话不多说,直接来一发看看:在VS2010里新建一个空白解决方案,再添加两个类库项目:Model、DataAccess和一个控制台项目BreakAwayConsole。分别是实体、数据访问、控制台显示。项目结构图:详细介绍:1.实体类Model本类库下有两个类:Lodging(住宿类)、Destination(景点类)Lodging类定义: /// /// 住宿类 /// public class Lodging { public int Lodgin...
阅读全文
C#委托的介绍(delegate、Action、Func、predicate)
摘要:C#委托的介绍(delegate、Action、Func、predicate) 委托是一个类,它定义了方法的类型,使得可以将方法当作另一个方法的参数来进行传递。事件是一种特殊的委托。 1.委托的声明 (1). delegate delegate我们常用到的一种声明 Delegate至少0个参数,至多32个参数,可以无返回值,也可以指定返回值类型。 例:publicdelegateintMethodtDelegate(intx,inty);表示有两个参数,并返回int型。 (2). Action Action是无返回值的泛型委托。 Action 表示无参,无返回值的委托 A...
阅读全文
CLR_Via_C#事件
摘要:CLR_Via_C#学习笔记之事件一:首先我先引用网上别人对事件的一些说明,然后将会通过一个事例进行对事件的演示;EventArgs是包含事件数据的类的基类,用于传递事件的细节。EventHandler是一个委托声明如下public delegate void EventHandler( object sender , EventArgs e ) 注意这里的参数,前者是一个对象(其实这里传递的是对象的引用,如果是button1的click事件则sender就是button1),后面是包含事件数据的类的基类。private void button1_Click(object sender, S.
阅读全文