03 2008 档案
摘要:一、概述 当两个进程在进行远程通信时,彼此可以发送各种类型的数据。无论是何种类型的数据,都会以二进制序列的形式在网络上传送。发送方需要把这个对象转换为字节序列,才能在网络上传送;接收方则需要把字节序列再恢复为对象。 把对象转换为字节序列的过程称为对象的序列化。 把字节序列恢复为对象的过程称为对象的反序列化。 二、对象的序列化主要有两种用途: 1) 把对象的字节序列永久地保存到硬盘上,通常存放在一个文件中; 我们经常需要将对象的字段值保存到磁盘中,并在以后检索此数据。尽管不使用序列化也能完成这项工作,但这种方法通常很繁琐而且容易出错,并且在需要跟踪对象的层次结构时,会变得越来越复杂。可以想象一下
阅读全文
摘要:using System;using System.Collections.Generic;using System.Text;using System.Threading;namespace sample{ class AsyncDemo { public string TestMethod(int callDuration, out int threadid) { Console.WriteLine("Test Method begins"); Thread.Sleep(callDuration); threadid = System.Threading.Thread.
阅读全文
摘要:BeginInvoke,有两个参数,一个调用方法的参数列表。 例如:delegateintTestDelegate(inti);intAdd(inti){}TestDelegatetd=newTestDelegate(Add);td.BeginInvoke(1/*params*/,null,null);代码中 1 就是参数列表了,数量可以是0-N,数量对应方法的参数个数! 列表参数之后就是第一个参数AsyncCallback callback,这个参数也许也是个委托吧!如果方法执行完毕。就调用callback的方法执行后续。这个可为null 第三个参数是Object asyncState,如果
阅读全文
摘要://要进行异步的方法privatestringMethod1(intN,outintN2)...{N2=N;returnN.String();}//定义与方法同签名的委托privatedelegatestringDelegateName(intN,outintN2);//程序入口privatevoidMain()...{//实例化委托DelegateNamedn=newDelegateName(Method1);inti;//异步开始IAsyncResultiar=dn.BeginInvoke(1,outi,null,null);//去做别的事//…………//做完别的事//异步结束string
阅读全文
摘要:引言委托 和 事件在 .Net Framework中的应用非常广泛,然而,较好地理解委托和事件对很多接触C#时间不长的人来说并不容易。它们就像是一道槛儿,过了这个槛的人,觉得真是太容易了,而没有过去的人每次见到委托和事件就觉得心里别(biè)得慌,混身不自在。本文中,我将通过两个范例由浅入深地讲述什么是委托、为什么要使用委托、事件的由来、.Net Framework中的委托和事件、委托和事件对Observer设计模式的意义,对它们的中间代码也做了讨论。将方法作为方法的参数我们先不管这个标题如何的绕口,也不管委托究竟是个什么东西,来看下面这两个最简单的方法,它们不过是在屏幕上输出一句问
阅读全文
摘要:首先我们来看一下泛型的基本概念。 最显著的一点就是它参数化了类型,把类型作为参数抽象出来,从而使我们在实际的运用当中能够更好的实现代码的重复利用,同时它提供了更强的类型安全,更高的效率,不过在约束方面,它只支持显示的约束,这样在灵活性方面就显得不是那么好了。我觉得它之所以能够提供更高的效率是因为泛型在实例化的时候采用了"on-demand"的模式,即按需实例化,发生在JIT(Just In Time)编译时。 下面来看如何定义一个泛型类,很简单,你只需要意识到一点,在这里,类型已经被参数化了: //如果这样写的话,显然会报找不到类型T,S的错误publicclassTest
阅读全文
摘要:File = App.config<?xmlversion="1.0"encoding="utf-8"?><configuration><configSections><sectionname="systems"type="ConfigConsoleApplication.SystemsSection,ConfigConsoleApplication"/></configSections><systems><systemname=&quo
阅读全文
摘要:VS2003中对于应用程序配置文件(app.config或者web.config)只提供了读取的功能。而在VS2005中,对于配置文件的功能有了很大的加强。在VS2005中,对于应用程序配置文件的读写一般使用Configuration,ConfigurationManager两个类。ConfigurationManager类为客户应用程序提供了一个访问的功能。使用ConfigurationManager对象执行打开配置文件的操作后,将会返回一个Configuration的对象。通过程序实现读写配置文件的代码如下所示:1 创建配置文件中的配置节所对应的类。该类必须继承自Configuration
阅读全文
摘要:Asp.NET 操作配置文件 Asp.NET 操作配置文件 1. Web 项目 1.1 系统自带 1)打开配置文件(Web.config) Configuration config = WebConfigurationManager.OpenWebConfiguration("~"); 2)获取相应的appSettings配置节 AppSettingsSection appSection = (AppSettingsSection)config.GetSection("appSettings"); 3)增加相应的appSettings配置节 4)保存配置
阅读全文
摘要:test.config-configuration<?xmlversion="1.0"encoding="utf-8"?><configuration><configSections><sectionname="add"type="WindowsApplication2.ConfigSectionData,WindowsApplication2,Version=1.0.0.0,Culture=neutral,PublicKeyToken=null"/></con
阅读全文
摘要:自定义配置文件的名称,不需要exe.config。具体的实现代码如下ExeConfigurationFileMap^filemap=gcnewExeConfigurationFileMap;filemap->ExeConfigFilename="1.xml"; //OpenApp.ConfigofexecutableSystem::Configuration::Configuration^config= ConfigurationManager::OpenMappedExeConfiguration(filemap,ConfigurationUserLevel::No
阅读全文
摘要:反射的概述反射appDomain的程序集反射单个程序集利用反射获取类型信息设置反射类型的成员通过反射创建类型的实例反射类型的接口反射的性能反射的概述反射的定义:审查元数据并收集关于它的类型信息的能力。元数据(编译以后的最基本数据单元)就是一大堆的表,当编译程序集或者模块时,编译器会创建一个类定义表,一个字段定义表,和一个方法定义表等,。System.reflection命名空间包含的几个类,允许你反射(解析)这些元数据表的代码和反射相关的命名空间(我们就是通过这几个命名空间访问反射信息):System.Reflection.MemberInfoSystem.Reflection.EventIn
阅读全文
摘要:绪论特性(Attributes)是一种崭新的声明性信息。我们不仅可以通过特性来定义设计层面的信息(例如help file, URL for documentation)以及运行时(run-time)信息(例如使XML与class相联系),而且我们还可以利用特性建立自描述(self-describing)组件。在这篇教程中,我们将会看到如何建立和添加特性到各种程序实体以及如何在运行时环境中获取特性信息。定义正如MSDN中所描述的那样----- “特性是被指定给某一声明的一则附加的声明性信息。”使用预定义(Pre-defined)特性在C#中,有一个小的预定义特性集合。在学习如何建立我们自己的定制
阅读全文
摘要:using System;using System.Reflection;class Program{static void Main(){System.Attribute[] attrs = Attribute.GetCustomAttributes(typeof(xxx));foreach (System.Attribute attr in attrs){if (attr is aaa){aaa a = (aaa)attr;Console.WriteLine("name={0},version={1}",a.Name,a.Version);}}}}[aaa("
阅读全文