C#
文章平均质量分 83
simon麦田
这个作者很懒,什么都没留下…
展开
-
对应面向接口编程的理解
问题的提出 定义:现在我们要开发一个应用,模拟移动存储设备的读写,即计算机与U盘、MP3、移动硬盘等设备进行数据交换。 上下文(环境):已知要实现U盘、MP3播放器、移动硬盘三种移动存储设备,要求计算机能同这三种设备进行数据交换,并且以后可能会有新的第三方的移动存储设备,所以计算机必须有扩展性,能与目前未知而以后可能会出现的存储设备进行数据交换。各个存储设备间读、写的实现方法不同,U盘转载 2015-12-31 14:10:47 · 404 阅读 · 0 评论 -
使用Nuget 安装指定版本package或者更新package到指定版本
首先打开程序包管理器控制台:工具→Nuget程序包管理器→程序包管理器控制台打开如下图所示的命令行界面安装指定版本的Package(例如:EntityFramework 5.0):PM> Install-Package BenchMarkdotnet -version 0.9.7更新到指定版本的Package(例如EntityFramewrok 6.0):原创 2016-08-10 08:55:50 · 8123 阅读 · 0 评论 -
c#的异步调用
转自:http://www.cnblogs.com/DebugLZQ/archive/2012/11/02/2751272.html主要是从理解上来讲;这篇文章主要写具体的实现方法。实现异步编程有4种方法可供选择,这4种访求实际上也对应着4种异步调用的模式,分为“等待”和“回调”两大类。四种方法,我在代码中都进行了详细的注释,这里不罗嗦了,直接用代码说明吧第一种方法:BeginEn转载 2016-07-26 15:39:43 · 405 阅读 · 0 评论 -
Application.StartupPath和System.Environment.CurrentDirectory的区别
Application.StartupPath和System.Environment.CurrentDirectory的区别System.Environment.CurrentDirectory的含义是获取或设置当前工作路径,而Application.StartupPath是获取程序启动路径,表面上看二者没什么区别,但实际上区别大得很。先说前者:比如说你程序放在桌面上启动,转载 2016-07-04 09:38:33 · 267 阅读 · 0 评论 -
C#的浅拷贝和深拷贝
转自:http://blog.csdn.net/lai123wei/article/details/72173651.深拷贝与浅拷贝 拷贝即是通常所说的复制(Copy)或克隆(Clone),对象的拷贝也就是从现有对象复制一个“一模一样”的新对象出来。虽然都是复制对象,但是不同的复制方法,复制出来的新对象却并非完全一模一样,对象内部存在着一些差异。通常的拷贝方法有两种,转载 2016-06-11 15:51:54 · 258 阅读 · 0 评论 -
一个简单的MemoryCache的实现
工作中需要用到内存缓存,最开始打算用个的是.net自带的MemoryCache这么个东西,用的时候发现在服务端有时会莫名其妙的丢失缓存并且丢失后就缓存不上了。本来网上关于使用MemoryCache的不多,一直也没有找到原因和解决办法,所以就自己仿着它写了一个简单的实现。首先看下目录结构其中:ChangeMoniter:是缓存对象的过期策略的检测器,包括文件改变监视器(F原创 2016-05-31 15:27:07 · 10398 阅读 · 0 评论 -
依赖注入那些事
转自:http://www.cnblogs.com/leoo2sk/archive/2009/06/17/1504693.html目录1 IGame游戏公司的故事 1.1 讨论会 1.2 实习生小李的实现方法 1.3 架构师的建议 1.4 小李的小结2 探究依赖注入 2.1 故事的启迪 2.转载 2016-04-19 17:21:20 · 413 阅读 · 0 评论 -
继上次使用remoting实现了AOP,这次是通过RealProxy和ProxyAttribute实现
相比之前一篇remoting实现的AOP,这次用RealProxy和ProxyAttribute实现的简单许多。代码如下:首先是透明代理,该类在运行时会自动根据类的特性去代理其被代理对象using System;using System.Runtime.Remoting.Messaging;using System.Runtime.Remoting.Proxies;usi原创 2016-04-19 13:42:24 · 1894 阅读 · 0 评论 -
C#中移除自定义事件的所有方法
/// /// 移除一个对象指定事件的所有注册的方法 /// /// 泛型 /// 当前对象 /// 事件名 public static void RemoveEvent(T obj, string eventName) { Delegate[] invoke原创 2016-03-31 15:47:39 · 3289 阅读 · 0 评论 -
关于Data at the root level is invalid错误的解决方式
有时在使用XmlDocument.LoadXML()方法时会出现报Data at the root level is invalid的错误。网上很多说发是因为xml文件的格式不对引起,如果你在仔细的查看了xml文件格式后并没有发现问题,那么很可能是UTF8编码格式中的BOM头引起的。这里找的的答案:http://www.codeproject.com/Questions/57287原创 2016-05-11 13:55:01 · 15652 阅读 · 0 评论 -
.Net基于Remoting远程调用实现的AOP拦截
AOP的作用就是横切关注点,然后将分离后的关注点已面的形式来呈现,这是概念性的说法,举个列子来说明吧。假设在一个应用系统中,有一个共享的数据必须被并发同时访问,首先,将这个数据封装在数据对象中,称为Data Class,同时,将有多个访问类,专门用于在同一时刻访问这同一个数据对象。为了完成上述并发访问同一资源的功能,需要引入锁Lock的概念,也就是说,某个时刻,当有一个访问原创 2015-12-31 09:22:48 · 1384 阅读 · 0 评论 -
c#自定义类型的转换方式operator,以及implicit(隐式)和explicit (显示)声明的区别
operator 关键字来重载内置运算符,或提供类或结构声明中的用户定义转换。它可以定义不同类型之间采用何种转化方式和转化的结果。operator用于定义类型转化时可采用2种方式,隐式转换(implicit)和显示转换(explicit)一般定义方式为public static implicit 目标类型(被转化类型 变量参数){ return 目标类型结果转载 2016-03-10 14:02:31 · 628 阅读 · 0 评论 -
关于operator 的用法
转自:http://www.cnblogs.com/LilianChen/archive/2013/03/15/2961901.html运算符重载允许为运算指定用户定义的运算符实现,其中一个或两个操作数是用户定义的类或结构类型。用户定义的运算符实现的优先级总是高于预定义运算符实现:仅当没有适用的用户定义运算符实现时才会考虑预定义运算符实现。运算符可重载性转载 2016-03-10 13:54:56 · 1107 阅读 · 0 评论 -
将MethodInfo转化为Delegate的方式
有时再用反射的时候,需要将反射出的方法注册给某个事件,这是就需要将改方法转化为delegate后才能绑定到对应的事件上可以通过Delegate.CreateDelegate的方法来实现,如下://反射的对象Object obj = ReflectionCache.Current.GetReflectionObjFromCache(dict["assembly"], dict["class"原创 2016-03-31 16:31:18 · 3571 阅读 · 0 评论 -
EventArgs的一点变化
转自:http://www.it165.net/pro/html/201308/6751.html这只是一个很小的状况,但为了怕年纪大忘记就写篇文记录一下。 在 .Net 2.0 时代出现的 EventHandler 委派中本来 TEventArgs 是有泛型约束,要求该泛型型别必须是 EventArgs 的衍生类别,在 2.0 ~ 4.0 时代这个委派的宣告是长这样转载 2016-03-31 16:15:14 · 387 阅读 · 0 评论 -
抽象类,接口的比较
抽象类和接口的区别 (1)抽象类里面可以有非抽象的方法,接口里只能有抽象方法。 (2)抽象类中的抽象方法声明时不能有大括号,而接口中的所有方法都没有大括号。 抽象类(abstract class): a.抽象类是仅供派生的类,无法实例化一个抽象类,只能实例化从它派生的类。 b.抽象类的主要特征在于它包含抽象成员(abstract membe原创 2016-01-08 13:24:07 · 382 阅读 · 0 评论 -
const和readonly小结
前言:从上周开始看>第三版,刚刚看完了第四和第七两章,这两章都算常识,但是有很多基础知识和术语理解不是很深入,所以看得有点慢,计划每两周写点心得,是以成文。1、应用场景重现一个简单的应用程序解决方案,如下:其中,类库CSharpLib里定义一个简单的类SomeType如下:123456转载 2016-09-14 13:26:44 · 259 阅读 · 0 评论