随笔分类 - .NET/C#
有关.NET/C#的技术文章
摘要:Microsoft向公众发布了Visual Studio 2010 with .NET 4.0, Release Candidate版本。详细信息请参见:http://msdn.microsoft.com/en-gb/vstudio/dd582936.aspx。
阅读全文
摘要:最近在研究Dynamics AX与AspDotNetStorefront的集成问题。AspDotNetStorefront提供一种领域事件模型,允许开发人员对事件进行定制或捕获,进而执行一些客户化操作。它所支持的EventHandler是一系列的ASP.NET页面,也就是CalloutURL中需要指定一个ASP.NET页面作为Event Handler。在第一次开发的时候,我一直得到“...
阅读全文
摘要:在.NET中如需在非UI线程中改变UI控件属性时,CLR会抛出异常,提示无法在非UI线程中更新界面上的控件(Cross-thread operation not valid)。一般情况下有两种解决办法。第一种就是设置Control的静态属性CheckForIllegalCrossThreadCalls为False,如下:另一种办法,就是使用委托,根据控件的InvokeRequired属性判断当前控...
阅读全文
摘要:发生了什么?这是件非常有趣的事情。我们现在可以在X++中编译并执行C#脚本。请看下面的X++代码:执行完上面这段job程序,Dynamics AX就会编译#SourceScript宏中定义好的C#脚本,然后执行脚本程序,并弹出了一个infolog,上面显示了计算结果:30。如下:这是如何实现的?如果你直接将上面的job导入到AOT里去执行,那么在编译阶段就会出错,原因是你的Dynamics AX根...
阅读全文
摘要:在CSDN上,很多朋友会问,C#中如何读取XML文件?如何读取最快?我的回答是,使用XmlTextReader读取的速度是最快的。但也不乏一些效率稍低但也非常有效的读取方式,比如序列化方式。这里详细介绍一下步骤吧。使用Visual Studio的CreateSchema工具,或者XMLSpy等第三方的工具,打开需要读取的XML文件,并创建XSD(推荐使用Visual Studio自带的工具) 比如...
阅读全文
摘要:dynamic类型是.NET 4.0引入的一个新的概念,它的目的是增强与python等动态语言的互操作性。由于动态的原因,使得dynamic类型的变量只有在运行时才能被确定具体类型,而编译器也会绕过对这种类型的语法检查。其实这样做是危险的。下面的代码演示了在C#中如何使用dynamic类型:这段代码是可以编译通过的,尽管Person类中并没有定义Age这个公有属性,因为c的类型是在运行时动态绑定的...
阅读全文
摘要:诺基亚手机采用的几乎都是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...
阅读全文
摘要:上个月试装了Visual Studio 2010 BETA1版本,内置.NET 4.0。Entity Framework(EF)是其中的一个非常重要的框架,在上文中我也介绍过,从整体上看,Entity Framework已经开始让.NET逐步走向了领域驱动设计时代。事实上Visual Studio 2008 Service Pack 1中已经带了一个Entity Framework的BETA版本,...
阅读全文
摘要:【本贴转载并翻译自 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...
阅读全文
摘要:先看下面的例子: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...
阅读全文
摘要:本文将简要介绍接口的显式实现。 先看下面的代码:interfaceIInterfaceA { intGetValue(intx); } interfaceIInterfaceB { intGetValue(intx); } classConcrete:IInterfaceA,IInterfaceB { } 在上面的代码中,Concrete类同时实现了IInterfaceA和IInterfaceB。...
阅读全文
摘要:在 上文中,我发布了一个在WLW中插入语法高亮代码的插件,该插件使用table的HTML 标记来分隔代码与行号。这样做的一个问题是,针对不同的博客主题,行 号列的宽度可能需要手动调整,而且大量的<td></td>标记使得博客文章变得很大。为此,我修改了插件源代码,使用空格来分隔代码与行号。这样做其实也有弊端,比如代码折行的时候,折行后的第一个字符会与行号的第一个字符同列,这...
阅读全文