代码改变世界

随笔档案-2011年08月

利用索引器搞定了一个通用字典数据加载方式。

2011-08-30 20:32 by java线程例子, 272 阅读, 收藏,
摘要: 因为字典都来自统一的字典表,访问方式基本相同,利用绑定可以支持索引的特性,搞了一个通用的字典数据源加载的机制,程序员使用的时候非常方便,可以提供给下拉框,列表框等地方。统一的绑定访问的形式:{binding Path=Dict[XXXX].DictValues},dict属性放在viewmodel基类里面,程序员只要按上述方式绑定即可。索引器方式的绑定,非常的有用,大家可以多试试! 阅读全文

AEF 中的SQL语句执行能否返回数据集(DataTable)?

2011-08-29 20:22 by java线程例子, 207 阅读, 收藏,
摘要: 用实体来做事情的时候确实比较方便,有利于编程。但有的时候也非常麻烦,因为有些数据属于属性动态的,这在企业应用中做些比较高级的功能时用的地方比较多,虽然我前面的博文中提供了一种解决方案,但那时后面没有用实体框架,而是直接用可以返回数据集(DataTable,DataSet)的方式进行的。对于AEF框架而言,就很难搞了,因为执行ESQL后的返回结果必须提供一个实体类才能装载,这实际上就限制了这种处理方法的应用。当然,解决办法还是有的,我们可以用实体关联查询来替代sql。但随之而来的是,如何动态构建这种针对实体的关联查询呢?当然,终极解决方案就是不用这个框架!WCF RIA Service那个动态生 阅读全文

WCF RIA Service下的Entity和ComplexObject的一点区别(微软不厚道)

2011-08-29 20:00 by java线程例子, 133 阅读, 收藏,
摘要: 1)对于Entity的支持相对来说比较好,自动生成的实体如果以Entity为基类,可以挂接属性改变事件,这个非常有用,但如果生成的实体以ComplexObject为基类,则没有这个好处;2)ComplextObject对于服务端得实体要求不是很严,不像要生成Entity为基类的实体那样,不能在字典中含有实体,字典中的类型只能是基本类型;3)在服务中如果要暴露以Entity为基类的实体,必须有一个不带Invoke的标签的查询方法,否则,系统会将暴露该实体集合的方法之一看成是这样的方面,如果你的实体中有其它的实体,会报编译错误。(很是奇怪的规则,都被我测出来了)3)要生成以Entity为基类的实体 阅读全文

WPF依赖属性,绑定通知机制系列补充说明

2011-08-28 09:31 by java线程例子, 359 阅读, 收藏,
摘要: 依赖对象准备增加了属性元数据类型的定义,开始忘记贴了。以上代码都经过了测试,模拟是成功的。其实微软在页面中的绑定语法最终都会如模拟中那样实现。微软的做法是导入xaml文件的时候根据文件中的控件语法动态的生成控件实例,其绑定语法也是在这个过程中自动添加进出的,只不过需要一个简单的路径语法分析而已。另外,Silverlight里的每个控件都有一个DataContext属性,这个属性发生变化时,我觉得会整理一次当前控件和其子控件的绑定关系,也就是再做一次绑定梳理。当然,这只是我的猜测,谁有闲心的话可以去反编译一下代码,看看具体的实现。希望这篇文章能帮助大家理解WPF的依赖属性,绑定和通知机制的了解。 阅读全文

模拟实现WPF的依赖属性及绑定通知机制(4)--模拟实现绑定连动机制

2011-08-28 09:20 by java线程例子, 225 阅读, 收藏,
摘要: 1、一个依赖对象示例:public class MyDendencyControl : MyDependencyObject { public static readonly MyDependencyProperty ContentDependencyProperty = MyDependencyProperty.Register("Content", typeof(string), typeof(MyDendencyControl), new MyPropertyMetadata("hello"));//封装成普通属性的依赖属性,注意调用的是基类的相关 阅读全文

模拟实现WPF的依赖属性及绑定通知机制(3)--依赖对象

2011-08-28 09:07 by java线程例子, 237 阅读, 收藏,
摘要: 下面是依赖对像类的实现:(注,这里涉及到INotifyPropertyChanged接口,大家可以参考MSDN文档了解)./// <summary> /// 依赖对像,主要提供属性值和属性绑定的管理。 /// </summary> public class MyDependencyObject { private IDictionary<MyDependencyProperty, object> _dict = new Dictionary<MyDependencyProperty, object>(); private IDictionary& 阅读全文

模拟实现WPF的依赖属性及绑定通知机制(2)--依赖对象的准备

2011-08-28 09:04 by java线程例子, 152 阅读, 收藏,
摘要: 依赖对象一个主要的功能就是提供对依赖属性属性值的管理,所有需要具有依赖属性的类都可以从这里继承,而无需自己去管理依赖属性值。依赖对象的主要方法就是SetValue和GetValue两个方法,这也是依赖属性和普通属性获取值不一样的地方,当然实际的应用中依赖属性一般不会直接使用这两个方法,而是封装成普通属性方式。另外对于依赖属性,我们还提供了一个属性值发生变化时依赖对象可以截获的回调机制,这样做的目的是增加对依赖属性的控制,但需要注意的是这个控制是针对类的,而不是实例,因此处理的时候需要注意到这个特性。1)为了提供这个特性我们需要定义一个用于回调的委托:public delegate void M 阅读全文

模拟实现WPF的依赖属性及绑定通知机制(1)--依赖属性

2011-08-28 08:47 by java线程例子, 252 阅读, 收藏,
摘要: 依赖属性的好处大家可以参见前面我转载的博文。我们知道,WPF中控件的属性非常多,但这些属性中大部分你在编程过程中是不会改变设置的,而是直接利用其默认值(所以以后设计属性时,默认值的选择也非常关键,这有利于减少存储),如果采用原来的属性方式,每个类的实例都会有自己的一份属性值集合,哪怕都是缺省值。这样做从存储上来讲当然是不划算的,因此可以将缺省值存在类里面,而只有改变了的与默认值不同的值才存在实例里面,然后按照一定的逻辑顺序来访问属性值即可,这就是依赖属性的基本思想。下面我们开始模拟这套机制来实现我们自己的依赖属性:1)依赖属性 其实依赖属性类就是一个包含属性相关设置的类,本身没有什么特别之处, 阅读全文

Silverlight的依赖属性与附加属性

2011-08-27 21:59 by java线程例子, 211 阅读, 收藏,
摘要: Silverlight的依赖属性与附加属性SilverlightAttachedProperty,CLR属性,DependancyProperty,Silverlight, 依赖属性, 值变更, 寻值,附加属性好久没写Silverlight了,依赖属性(Dependency Property)和附加属性(Attached Property)这两个算是很基础的知识都不是很记得了。写一写,当做一下笔记吧。CLR属性 与 依赖属性CLR属性我们非常熟悉了,在DotNet编程中随处可见。最简单最常见的属性访问器就是直接操纵类的私有成员,如下:public class Person { priv... 阅读全文

Silverlight实战示例(兼集合属性的妙用)系列源码文件已经上传,大家可下载

2011-08-27 09:41 by java线程例子, 187 阅读, 收藏,
摘要: 今天有空整理了一下Silverlight实战示例(兼集合属性的妙用)系列源码,上传到CSDN的下载频道,大家需要的话可以去加载,大家一起进步!如果大家觉得2个资源分贵了,告一声,我回去修改(不知能不能修改资源分?)一下。随便说一声,上载的资源可能需要审核,估计要点时间才能看见,多长时间就看CSDN的效率了. 阅读全文

这段时间学习和应用silverlight+WCF RIA Service的总结

2011-08-26 22:21 by java线程例子, 161 阅读, 收藏,
摘要: 要做ERP这样的企业业务系统,Silverlight+WCF RIA Service还是有欠缺,客户端没有同步调用麻烦多多,服务端的自动生成客户端实体和代理服务代码,是看起来很美,但用处不大,而且极不利于分拆。分几个库吧,公共实体部分生成会重合,会出错,不分吧,都在一起维护很困难。再说服务,如果所有服务都放在一个或者几个服务里,维护是个高难度,也不利于自动代码生成和大家协同工作。如果按单表分离吧,服务又太多。AEF框架就不提了,放着关系数据库不用非得在内存中再来个实体关系数据库,只能Follow it.总结一句话:至少目前来看,微软的这个方案在桌面企业级应用上基本是个250. 阅读全文

Silverlight实战示例7(兼集合属性的妙用)--客户端视图层(V)

2011-08-25 07:26 by java线程例子, 134 阅读, 收藏,
摘要: 1)视图层后台代码,很简洁,主要是处理视图模型的创建,当然,如果你利用一些技术,这里是可以不需要代码的。不过我的观点是任何事情都不要搞成洁癖,如果页面的所有控制都放在视图模型层,反而会使得视图模型层最后就变成了视图的后台代码,那么这个MVVM模式就失去了意义。using MEntities;using RIAServices.Web;using System.Threading;using System.Dynamic;using System.Windows.Data;using MAppStructure.ViewModel;namespace MAppStructure{ public. 阅读全文

Silverlight实战示例6(兼集合属性的妙用)--客户端视图模型层(VM)

2011-08-25 07:16 by java线程例子, 175 阅读, 收藏,
摘要: 3)视图模型层DynamicDataViewModel .csusing System;using System.Net;using System.Windows;using System.Windows.Controls;using System.Windows.Documents;using System.Windows.Ink;using System.Windows.Input;using System.Windows.Media;using System.Windows.Media.Animation;using System.Windows.Shapes;using MAppStr 阅读全文

Silverlight实战示例5(兼集合属性的妙用)--客户端模型层(M)

2011-08-25 07:07 by java线程例子, 124 阅读, 收藏,
摘要: 1)服务代理层 这里的代码都是系统自动产生的,主要负责代理服务端得方法执行,没什么特别可说的.2)客户端模型层DynamicDataSource.csusing System;using System.Net;using System.Windows;using System.Windows.Controls;using System.Windows.Documents;using System.Windows.Ink;using System.Windows.Input;using System.Windows.Media;using System.Windows.Media.Animati 阅读全文

Silverlight实战示例4(兼集合属性的妙用)--业务逻辑与服务层

2011-08-24 22:28 by java线程例子, 205 阅读, 收藏,
摘要: 1)业务逻辑层:DynamicDataBusi.csusing System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Data;using MEntities;using System.Data.SqlClient;namespace BBusiness{ public class DynamicDataBusi { public DynamicDataTable GetDynamicDataTable(string strSQL, string ConnStr) { S 阅读全文

Silverlight实战示例3(兼集合属性的妙用)--数据库访问层和数据访问层

2011-08-24 22:14 by java线程例子, 193 阅读, 收藏,
摘要: 这两层实际上就是大多数实体框架所处的层次,在这两个层次方面,大家可以参考动软的方式,当然,也可以自己构建,也可以利用现有的成熟的实体框架。但对于大型项目或者产品型项目,最好还是不要使用那些复杂的实体框架,因为更新,维护,升级都不太可控,而且很多时候都会有一些限制,不太利于构建高效动态的业务应用(再怎么强大,还是没有直接用SQL语句与数据库打交道强大,而且使用框架时,如果利用了缓存,那么存储过程使用,其它SQL语句的使用,数据的同步都是个大问题)下面的代码是这两层的一个示例:1)数据库访问层:using System;using System.Collections.Generic;using 阅读全文

Silverlight实战示例2(兼集合属性的妙用)--实体的组织(续)

2011-08-24 21:59 by java线程例子, 149 阅读, 收藏,
摘要: 3)数据行DynamicDataRow.csusing System;using System.Collections.Generic;using System.Linq;using System.Text;namespace MEntities{ [Serializable] public partial class DynamicDataRow { public List<DynamicDataField> DataFields { get; private set; } public DynamicDataRow() { DataFields = new List<Dy 阅读全文

Silverlight实战示例2(兼集合属性的妙用)--实体的组织

2011-08-24 21:52 by java线程例子, 164 阅读, 收藏,
摘要: 在本篇中,我们不仅演示实体的结构,而且我们利用集合属性来打造万能实体(类似于DataTable)。 下面是代码:1)首先我们定义Column,主要提供字段列信息:DynamicDataColumn.csusing System;using System.Collections.Generic;using System.Linq;using System.Text;namespace MEntities{ [Serializable] public partial class DynamicDataField { public string FieldName { get; set; } pub 阅读全文

Silverlight实战示例1(兼集合属性的妙用)--整体架构

2011-08-24 21:16 by java线程例子, 193 阅读, 收藏,
摘要: 在这个系列里我们将学习一般业务系统的整个过程,涉及到从数据库一直到silverlight页面的各个方面。示例中遵循我一贯的风格,不采用任何第三方框架。但为了简单起见,这里不考虑多种数据库支持(其实多种数据库支持在可以利用存储过程的情况下,非常简单,封装一个数据库访问层即可),同时为了减轻贴图的压力,我们假设各位对于基本的silverlight的程序创建没有任何问题。下面是整个程序的大致框架:1)数据库:示例中采用sqlserver.2)应用服务层:分为4.5层,其中实体层是大部分层次都需共享的,因此力求简单,干净(除了必要的属性外,不要给实体任何方法),其它4层一次是: A)数据库访问层:封这 阅读全文

架构设计原则--类层次多少为宜?

2011-08-23 06:40 by java线程例子, 173 阅读, 收藏,
摘要: 只要是采用面向对象编程,类层次是必然的(包括接口),虽然面向对象编程有一个原则就是多用接口少用继承的原则,但这并不是说不要用继承,毕竟继承可以实现代码的复用,有其好处。对于自己的类层次,当然是越少越好,但不管多少最少是2两层,那么2-3层应该很正常,4-5层有点多,6层及以上,对于一般的应用体系就多了。我一般设计的应用体系中类层次是:第一层,顶层,一般为非范型,用于该类的基本规范和约束,第2层分标准功能和用户自定义两个分支。标准功能采用范型,这样程序员在叶子类使用时语义更加明确,不用逆向转换,用户自定义基类只提供标准的必要的约束,提供给用户处理非标准的情况。第三层就是叶子类。这种层次体系的好处 阅读全文

C#在Form上面画一把尺子

2011-08-17 12:28 by java线程例子, 369 阅读, 收藏,
摘要: //-------------------------------------------------// TenCentimeterRuler.cs ?2001 by Charles Petzold//-------------------------------------------------using System;using System.Drawing;using System.Windows.Forms;class TenCentimeterRuler: PrintableForm{ public new static void Main() { ... 阅读全文

Java学习心得(转自张国宝)

2011-08-17 12:17 by java线程例子, 198 阅读, 收藏,
摘要: 1. 数组有没有length()这个方法? String有没有length()这个方法? 答:数组没有length()这个方法,有length的属性。 String有length()这个方法。2. String s = new String("xyz");创建了几个String Object? 答:两个对象,一个是“xyx”,一个是指向“xyx”的引用对象s。3. abstract class和interface有什么区别? 答:声明方法的存在而不去实现它的类被叫做抽象类(abstract class),它用于要创建一个体现某些基本行为的类,并为该类声明方法,但不能在该类中 阅读全文