
.Net & C#
redoc_li
这个作者很懒,什么都没留下…
展开
-
一年前写的C#的一些文章
06年初,在另外一个blog上整理了几篇实际工作中遇到的问题的研究心得,后来一直没更新,:) 现在转移到这里。原创 2007-06-29 21:46:00 · 973 阅读 · 2 评论 -
Remoting中无法创建代理类型的错误
因为所使用的远端对象类型在服务器端和客户端的定义不一致,就会产生如此错误。解决办法:将对象抽象成接口,接口中包含了客户端所要使用的方法和属性等;然后,将该接口的定义编译成一个公共的程序集,分别放在服务器端和客户端。原创 2007-06-29 21:49:00 · 621 阅读 · 0 评论 -
.Net中的泛型
.net中的泛型和c++泛型有很多的区别,为了加强类型安全,.net增加了很多语言层面的约束。下面的文章有深入的讲解:http://msdn.microsoft.com/msdnmag/issues/03/10/NET/转载 2007-06-29 21:59:00 · 868 阅读 · 0 评论 -
关于C# 3.0
3.0中最引人注目的就是LINQ了(http://msdn.microsoft.com/netframework/future/linq/)。它将强大的查询功能集成到了语言内部,这种思想要大大超前于传统的ORM。它的引入也给传统的程序语言带来了巨大的冲击。我会继续关注和学习。转载 2007-06-29 21:59:00 · 695 阅读 · 0 评论 -
设计规范化
MSDN给出了详细的指导:Design Guidelines for Class Library Developers 其中,包括了命名规则(Naming Guidelines)转载 2007-06-29 21:58:00 · 598 阅读 · 0 评论 -
DataSet的序列化
我们知道,DataSet可以在Remoting或者WebServices中传递,因为它实现了ISerializable接口。但是,DataSet的序列化并非真正的binary,而是先转换成XML,然后再binary,所以它的尺寸可想而之。对于大记录数的DataSet,如果不优化其尺寸,那么必然会影响传输效率。如何优化呢?目前,关于这方面的文章有如下几篇:1.http://msdn.mi原创 2007-06-29 21:56:00 · 3958 阅读 · 0 评论 -
Xml序列化的调试开关(四)
XML序列化错误:找不到文件或程序集名称“effvdqz0.dll”,或找不到它的一个依赖项详细的堆栈如下:StackTrace " at System.Reflection.Assembly.nLoad(AssemblyName fileName, String codeBase, Boolean isStringized, Evidence assemblySecurity, Bo原创 2007-06-29 21:55:00 · 951 阅读 · 0 评论 -
Xml序列化的调试开关(三)
既然每次序列化时,.net都会动态生成程序集,那么这个过程必然会影响程序效率。而实际上,当类型确定后,那么该程序集的内容也就确定了。所以,能否有一个工具来产生该程序集,然后,程序直接引用它,岂不解决了效率问题?目前,在.net 2.0中,已经提供了这样的工具(XML Serializer Generator Tool)sgen.exe。但.net 1.1中没有该工具。下面给出了一种半自动的方法原创 2007-06-29 21:54:00 · 1093 阅读 · 0 评论 -
Xml序列化的调试开关(二)
如果开关XML元素放置的位置不正确,即:没有放在根元素下,那又会发生什么事情呢?比如:放在元素下, 会产生如下结果:1. 仍然看不到动态生成的程序集2. 序列化时,会出现“***.dll中未找到**类型”的错误注意:序列化会在很多场景下发生,包括:显式的调用序列化器方法Re原创 2007-06-29 21:52:00 · 680 阅读 · 0 评论 -
Xml序列化的调试开关(一)
在XML序列化或反序列化时,具体说是将对象类型传入,构造Xml序列化器时,.net会动态生成一个程序集,该程序集中将序列化和反序列化调用转换成了一个个基础的DOM调用,从而实现对象和XML文件之间的变换。然而,该程序集在序列化完成后,就会被删除,所以你通常看不到它。当然,ms并没有完全禁止。如果将下述内容:原创 2007-06-29 21:51:00 · 828 阅读 · 0 评论 -
Xml序列化常见问题解答
"Troubleshooting Common Problems with the XmlSerializer"http://msdn.microsoft.com/xml/default.aspx?pull=/library/en-us/dnxmlnet/html/trblshtxsd.asp转载 2007-06-29 21:51:00 · 766 阅读 · 0 评论 -
Remoting中的工厂模式的应用
我们知道,Remoting的配置中通常只能定义一个远端对象,而实际上,客户端与服务器端的交互会依赖许多远端对象,那么如何解决该问题呢?建立一个工厂对象,它负责产生客户端所需要的其它远端对象。配置文件中只出现工厂对象的url。当然,凡是远端对象需要从MarshalByRef基类继承。如果客户端对象需要传递到服务器端,即:存在互相调用,那么客户端还必须注册为serviceprovider。原创 2007-06-29 21:50:00 · 960 阅读 · 0 评论 -
Remoting中的找不到程序集的原因之一
在调试Remoting程序中,如果一个类型定义即出现在了客户端,也出现在了服务器端,并且位于不同的程序集中。注意,该类型可能只是名称相同,内容可以不同。此时,往往会出现“找不到***程序集”或者“***程序集不存在”的错误。这是.Net中程序集的描述依靠元数据,而它非常依赖类型的签名。如果在Remoting两端,类型所在的程序集不相同,那么会提示上述错误。解决办法:在各自类型所在的程序原创 2007-06-29 21:48:00 · 923 阅读 · 0 评论 -
.Net程序中如何彻底关闭Excel - 关闭进程外COM方法
在.Net中, 经常我们会利用Excel来展现数据. 我们知道此时, Excel做为一个进程外COM被激活. 可是却无法彻底关闭该进程. 这是什么原因呢?COM的生命周期依靠计数机制,只有当引用计数为零时,该COM才会被释放..Net程序能调用COM,依赖于RCW(运行库可调用包装)组件,它负责把.Net方法的调用参数转化为COM接口中的参数,并调用相应的COM接口, 然后将返回结果最终返原创 2007-06-29 21:47:00 · 1799 阅读 · 0 评论 -
如何在WebServices方法中使用Hashtable
.net中凡是实现了IDictionary接口的类型,XML序列化器均无法接受。既然WebServices使用了XML序列化,那么其方法就无法直接使用Hashtable。于是,可以采用间接的方法,即:将Hashtable转换成二维交错数组,具体方法如下: private object[][] ToJaggedArray { get { object[][] oo = n原创 2007-06-29 21:57:00 · 877 阅读 · 0 评论