代码改变世界

使用MEF宿主在一个应用程序上

2012-04-04 23:27 by Oliver_Zhao, 470 阅读, 0 推荐, 收藏, 编辑
摘要:使用MEF宿主在一个应用程序上,这个应用程序创建一个CompositionContainer的实例,并往容器内添加Composable Parts。以下是使用宿主的步骤。创建一个宿主类。在示例中,我们使用控制台应用来做宿主。添加System.ComponentModle.Composition引用。添加一个Compose()方法,用来创建容器实例和组合宿主。添加一个Run()方法,调用Compose()方法。在Main()方法中,调用宿主类。 using System.ComponentModel.Composition; using System.ComponentModel.Com... 阅读全文

初识MEF

2012-04-04 23:19 by Oliver_Zhao, 835 阅读, 1 推荐, 收藏, 编辑
摘要:最近几天,项目需要,准备了解一下MEF。一个增加应用程序可扩展性的一个框架。一个应用程序的可扩展性也是十分重要的东西。不是吗?2012-04-04 23:22:53What is MEF?MEF(Managed Extensibility Framework),正如其名,管理可扩展的框架,简化创建扩展的应用。MEF通过发现和组合功能,载入扩展组件来实现一个完整的应用程序。What problems does MEF solve?MEF为运行时添加扩展这一问题提供了一个简单的解决方案。至今,任何应用程序想要实现Plugin-Model都必须从头开始创建它自己的底层框架。而且这些插件往往都只能.. 阅读全文

Generate a Class

2012-03-31 21:29 by Oliver_Zhao, 329 阅读, 0 推荐, 收藏, 编辑
摘要:我们知道有很多类很有用,但不知道如何对它进行初始化,这时我们应该怎么办?TextReaderTextReader Class: Represents a reader that can read a sequential series of characters. 我们来看一下继承关系:Inheritance HierarchySystem.Object -System.MarshalByRefObject -System.IO.TextReader *System.IO.StreamReader*System.IO.StringReader我们发现TextReader有两个子类,分别是Sys 阅读全文

小记《Safe Thread Synchronization -- Jeffrey Richter》

2012-03-27 22:33 by Oliver_Zhao, 207 阅读, 0 推荐, 收藏, 编辑
摘要:More details, please click here..NET的同步实现 当创建一个object在托管堆上时,每个object都有2个附加字段。一个字段是方法列表指针(MethodTablePointer)。这个方法列表指针包含了这个类中方法的内存地址。这个指针让我们能够获取在托管堆中的类型信息。实际上,当我们调用System.Object的GetType方法时,这个方法根据方法列表指针来确定object的真实类型。还有一个字段叫做同步块索引(SyncBlockIndex),它是一个32位的整数。 当一个object被构造出来时,object的同步块索引被初始化为一个负数的值(通.. 阅读全文

实现Linq.Distinct方法

2012-03-26 14:55 by Oliver_Zhao, 263 阅读, 0 推荐, 收藏, 编辑
摘要:using System;using System.Collections.Generic;using System.Linq;namespace Microsoft.Windows.System.PerfCounters{ public sealed class Program { static void Main(string[] args) { List<MyClass> s = new List<MyClass>(); s.Add(new MyClass { Age = 78 }); ... 阅读全文

《Windows Internal》(2)

2012-03-21 21:12 by Oliver_Zhao, 274 阅读, 0 推荐, 收藏, 编辑
摘要:System ArchitectureOperating System Mode In most multiuser operating systems, applications are separated from the operating system itself-the operating system kernel code runs in a privileged processor mode, with access to system data and to the hardware; application code runs in a nonprivileged pr. 阅读全文

《Windows Internals》(1)

2012-03-20 22:57 by Oliver_Zhao, 378 阅读, 0 推荐, 收藏, 编辑
摘要:Windows API Windows API: The Windows application programming interface(API) is the system programming interface to Micresoft Windows operating system. TheWindows API is described in the Platform Software Development Kit(SDK) documentation. An excellent description of how to program the Windows base. 阅读全文

你用Enum做过这些吗?

2012-03-17 21:15 by Oliver_Zhao, 175 阅读, 0 推荐, 收藏, 编辑
摘要:2012-03-17今天我们来讲一下枚举。enum 关键字用于声明枚举,即一种由一组称为枚举数列表的命名常量组成的独特类型。The enum keyword is used to declare an enumeration, a distinct type that consists of a set of named constants called the enumerator list.(in MSDN)Example1: 1 namespace ConsoleApplication1 2 { 3 enum Days : byte 4 { 5 Sunda... 阅读全文

《你必须知道的.NET》读后小结(4)

2012-03-16 22:33 by Oliver_Zhao, 175 阅读, 0 推荐, 收藏, 编辑
摘要:今天给大家扫一下.Net的盲。到底有哪些东西呢。2012-03-16const&readonly: 记得那时候,我同事给我写了一个关于const和readonly的区别。一句话,一个编译时确定变量的值,一个是运行时确定变量的值。但是不太具体,只是最主要的一个区别。详细讲:private const string str = "123"; // const 必须在定义时指定初始化。private const object = new object(); // const 不能使用new运算初始化一个const常量,即使该数据是一个值类型,因为new运算符总是运行时才能 阅读全文

《你必须知道的.NET》读后小结(3)

2012-03-15 21:43 by Oliver_Zhao, 152 阅读, 0 推荐, 收藏, 编辑
摘要:今天,我们来回顾一下C#中的一些关键字,并深入理解一下他们。然后聊一下C#中容易引起混淆的一些东西,我们来看一下书中对它们的解释。2012-03-15new:我们从多方面讨论new。作为运算符,用于创建对象和调用构造函数。这是我们最常用的,比方说Object a =new Object();。它在内存中到底做了什么,我们在这里就不深究了。作为修饰符,用于向基类成员隐藏继承成员。这主要是针对版本控制而言,保证了基类方法能够向前扩展和向后兼容,当然类似的还有override修饰符。借此,我们来看一段代码,以及他们的输出,来比较下new和override的区别。View Code 1 ... 阅读全文