随笔分类 - CLR
摘要:反射(Reflection)是.NET中的重要机制,通过放射,可以在运行时获得.NET中每一个类型(包括类、结构、委托、接口和枚举等)的成员,包括方法、属性、事件,以及构造函数等。还可以获得每个成员的名称、限定符和参数等。有了反射,即可对每一个类型了如指掌。如果获得了构造函数的信息,即可直接创建对象,即使这个对象的类型在编译时还不知道。 程序代码在编译后生成可执行的应用,我们首先要了解这种可执...
阅读全文
摘要:我们将研究如何创建一个作为Windows服务的应用程序。内容包含什么是Windows服务,如何创建、安装和调试它们。会用到System.ServiceProcess.ServiceBase命名空间的类。 什么是Windows服务? Windows服务应用程序是一种需要长期运行的应用程序,它对于服务器环境特别适合。它没有用户界面,并且也不会产生任何可视输出。任何用户消息都会被写进Window...
阅读全文
摘要:对于大多数应用而言,了解垃圾收集机制的主要动机并不是为了对内存“省吃俭用”,而是为了处理非托管资源的控制问题,这些问题往往跟内存的大小没有什么关系。例如对一个文件进行操作,该何时关闭文件,关闭文件时要注意什么问题,如果忘了关闭会带来什么后果?这些都是我们需要认真考虑的,无论你的内存有多大:) 对于这一类的操作,我们不能依赖GC帮我们做,因为它并不知道我们在释放时想干什么,它甚至不知道自己该干什么...
阅读全文
摘要:作为一位C++出身的C#程序员,我最初对垃圾收集(GC)抱有怀疑态度,怀疑它是否能够稳定高效的运作;而到了现在,我自己不得不说我已经逐渐习惯并依赖GC与我的程序“共同奔跑”了,对“delete”这个习惯于充当罪魁祸首的关键字也渐渐产生了陌生感。然而实践证明,我对GC的过分信赖却招致了很多意想不到的错误,这也激励了我对GC的运作机制作深入一步的了解。随后我开始翻书,查资料,终于对GC有了一个比较完整...
阅读全文
摘要:反射,就是程序集的一面镜子,所以才叫反射.废话少说,以一个简单的例子切入正题吧: 1 创建用于反射使用的DLL 新建一个C#类库项目,拷贝源代码如下,编译生成DLL(假如DLL的文件名是TestReflect.dll) 代码如下: using System; namespace Webtest { /**//// /// Summary description for Ref...
阅读全文
摘要:1、 什么是反射 2、 命名空间与装配件的关系 3、 运行期得到类型信息有什么用 4、 如何使用反射获取类型 5、 如何根据类型来动态创建对象 6、 如何获取方法以及动态调用方法 7、 动态创建委托 1、什么是反射 Reflection,中文翻译为反射。 这是.Net中获取运行时类型信息的方式,.Net的应用程序由几个部分:‘程序集(Assembly)’、‘模块...
阅读全文
摘要:一直以来,垃圾收集(Garbage Collection)在软件界的名声并不好。很多程序员认为垃圾收集做得不如自己来的直接,高效。这种说法有些时候是对的,一个精心为自己的特定程序设计定制的内存回收方法,肯定比为所有程序提供垃圾回收性能要高。但那对程序员要求甚高,一个项目下来花在内存回收的设计上的时间和精力是很可观的,而稍有不慎便会酿成灾难性的错误,技术再高超的程序员负担不起,整个现代软件工业也负担...
阅读全文
摘要:创建用于反射使用的DLL 新建一个C#类库项目,拷贝源代码如下,编译生成DLL(假如DLL的文件名是TestReflect.dll) using System; namespace Webtest { /**//**//**//// /// ReflectTest 的摘要说明。 /// public class ReflectTest { public Refl...
阅读全文