摘要:
dynamic类型是.NET 4.0引入的一个新的概念,它的目的是增强与python等动态语言的互操作性。由于动态的原因,使得dynamic类型的变量只有在运行时才能被确定具体类型,而编译器也会绕过对这种类型的语法检查。其实这样做是危险的。下面的代码演示了在C#中如何使用dynamic类型:这段代码是可以编译通过的,尽管Person类中并没有定义Age这个公有属性,因为c的类型是在运行时动态绑定的... 阅读全文
摘要:
在不少情况下,客户要求在Dynamics AX中实现全文搜索的功能,比如在零售行业,客户信息量庞大,为了提高搜索效率,不得不采用全文搜索。要实现全文搜索,就需要在数据表上创建全文索引,之后才能用CONTAINS和CONTAINSTABLE这样的SQL语句进行查询。然而,一旦数据表创建了全文索引以后,在Dynamics AX中就无法进行数据表同步,同步时出现如下错误信息:简单地说,数据表创建全文索引... 阅读全文
摘要:
很多情况下,我们会需要通过TableId和RecId来直接获得数据表记录。比如在Dynamics AX中实现全文检索的时候,一种合理的设计就是让全文检索返回RecId,然后再根据不同的TableId构建数据表实例,最终根据返回的RecId获得数据表记录,从而将结果显示给用户。相关代码如下: 阅读全文
摘要:
昨天收到了从首都师范大学给我寄来的CCSE2009论文集《计算机工程与应用》特刊,我的一篇文章《基于XML的松耦合UI架构的设计与实现》被刊登在这本论文集中。这篇文章通过引入RIA的思想,简要介绍了一种松耦合的用户界面实现方式,即使用XML作为用户界面的描述语言,使用基于WCF的通信方式,实现用户界面的服务端激活和服务端事件处理,从而使分布式应用程序具有良好的界面扩展能力和多用户界面支持。从整体架... 阅读全文
摘要:
诺基亚手机采用的几乎都是Symbian OS操作系统。而.NET Framework则是Windows平台的专利,因此.NET程序只能运行在使用Windows Mobile系统的手机上。那么Symbian OS是否就没法运行.NET程序了呢?答案是否定的。RedFiveLabs一直致力于在Symbian OS上实现.NET Runtime,在装有RedFiveLabs .NET Framework... 阅读全文
摘要:
这是我一年半以前用Visual Studio 2005开发的一款文件批处理系统。当时希望能够对一系列的图片文件进行批量处理,于是处于锻炼自己软件设计能力的目的,花了一个月的时间着手开发了这个软件。当然,作为单机版的文件批处理软件,在实用性方面并不具备太多亮点,但它更多的却是在软件扩展性和定制化方面的功能。仍然还是那句话,它是我“练手”的一个作品。今天在整理机器的时候发现了这... 阅读全文
摘要:
Visual Studio 2008自带的Crystal Reports Basic版本,事实上它的ActiveX组件版本是10.5的,关键的组件有两个:craxddrt.dll和crviewer.dll。本文简要介绍如何在C#项目中使用Crystal Reports Basic的ActiveX组件,以及如何发布带有该组件的项目。基本思路是使用craxddrt.dll中的ApplicationCl... 阅读全文
摘要:
在WCF开发中可能会遇到这样的问题,即在连接服务器的时候,程序抛出SOAP SecurityNegotiationException的异常。内容大致如下:我估计这个问题跟计算机处于某个域/Active Directory环境有关,当计算机连接到域时,并不会出现这样的问题,但如果计算机脱离了域,虽然能够使用域账号成功登录到计算机,但在启动WCF客户端时则会出现本文所说的异常。开发人员可以尝试将客户端... 阅读全文
摘要:
一个比较有趣的问题:某程序在启动之前,需要对三种不同类型的数据的交叉引用(Cross Reference,xref)进行更新,现假设每种xref组件(xref component)都专门负责一种类型数据的交叉引用更新。交叉引用更新程序(XRefUpdator)在被构造的时候,会通过反射列举出当前assembly中的所有components,以便在更新的时候,逐一调用这些components的相应方... 阅读全文
摘要:
C#接口有三种用途:提供方法、属性、事件的抽象。这是接口最常见的用途。在面向对象的设计中,接口是软件架构可扩展性的重要保证因素,与抽象类配合使用,使得框架结构具有“被注入”的特性,从而提高系统的扩展性用作泛型约束。在这种情况下,接口可以仅仅是一个类型,其中可以不带任何方法、属性或事件的定义。请看:view plaincopy to clipboardprint?public... 阅读全文
摘要:
十年前的今天,1999年9月9日,是我去大学报到的日子。感叹一下,时间过得真快啊,当时的情景好像就是发生在昨天似的,感觉很近。特在此发篇微博,以示纪念! 阅读全文
摘要:
上个月试装了Visual Studio 2010 BETA1版本,内置.NET 4.0。Entity Framework(EF)是其中的一个非常重要的框架,在上文中我也介绍过,从整体上看,Entity Framework已经开始让.NET逐步走向了领域驱动设计时代。事实上Visual Studio 2008 Service Pack 1中已经带了一个Entity Framework的BETA版本,... 阅读全文
摘要:
周末在家里,在自己的笔记本上安装了微软最新版操作系统:Windows 7。该系统无论在易用性还是在视觉体验方面,都有很大的改善。但是我个人建议,对Windows系列操作系统不是很熟悉的话,还是不要安装Windows 7了,毕竟在用户体验上的变动还是很大的。 我的笔记本电脑是惠普HP dv1606tn的,2006年买的,至今已经有3年历史了。3年里,硬件都已经发展了好几代了,而我的本本还能跑最新的W... 阅读全文
摘要:
【本贴转载并翻译自 When to use domain driven development and database driven development】 出于某种原因,Martin Fowler在其PoEAA一书中介绍了三种不同的模式:事务脚本(transaction script)、活动记录(active record)以及领域模型(DomainModel)。领域驱动设计使用的是领域模型... 阅读全文
摘要:
今天无意中看到一篇文章,介绍了.NET Framework 4.0中的Entity Framework的设计与使用。文章开头部分提到了Database First和Model First两种应用程序设计方式。从.NET Framework 3.5 SP1开始,Database First的思想就开始伴随我们,它支持反向工程,可以将数据库中的表反向生成支持DLinq的模型。而从即将到来的.NET F... 阅读全文
摘要:
附件是在Dynamics AX 2009中调用Crystal Reports的演示。注意:由于是使用ActiveX和COM技术,因此在使用前请确保安装了Crystal Reports产品演示里的Show report按钮打开的是d:\report1.rpt文件,请您根据自己的情况在Crystal Reports里开发所需的rpt文件,然后在Show report按钮的Click事件处理过程里指定这... 阅读全文
摘要:
【本文转载自CSDN论坛:http://topic.csdn.net/u/20081209/10/39b3b38a-0376-45e5-b878-b0305a573712.html】 今天在SD2大会上,听了李建忠老师讲的《.NET框架中的几个典型设计模式》课程收益非浅,李建忠老师的课总能给人醍醐灌顶的感觉,去年的《WPF内核机制》让我们可以从根本上理解WPF的革命。今年的设计模式,也是从根本上理... 阅读全文
摘要:
先看下面的例子:view plaincopy to clipboardprint?staticvoidMain(string[]args) { List<string>l=newList<string>(); l.Add("a"); l.Add("b"); l.Add("s"); l.Add("t"); if(l.Exists(s=>s.Equals("s"))) {... 阅读全文
摘要:
今天遇到一个问题,就是希望能够动态调用事件。传统的思路是,通过Reflection.EventInfo获得事件的信息,然后使用GetRaiseMethod方法获得事件被触发后调用的方法,再使用MethodInfo.Invoke来调用以实现事件的动态调用。 很不幸,Reflection.EventInfo.GetRaiseMethod方法始终返回null。这是因为,C#编译器在编译并处理由event... 阅读全文
摘要:
WCF所支持的序列化格式分为Xml和DataContract两种(以下简称Xml格式和DataContract格式)。个人认为,Xml序列化格式是为了达到协议兼容而保留下来的传统格式。比如通过WCF实现基于xup协议的UI架构时,为了与xup协议保持兼容,在设置WCF属性时,建议采用Xml格式;而DataContract格式则是WCF提供的一种新的序列化格式。默认情况下,WCF采用DataCont... 阅读全文