频 道 直 达 - 新闻 - 培训 - 软件 - 教程 - 前沿 - 组网 - 系统应用 - 安全 - 编程 - 存储 - 操作系统 - 数据库 - 服务器 - 专题 - 产品 - 案例库 - 读书 - 博客 - BBS
51CTO.COM_中国最大的网络技术网站
找资料:

3.2.12 ReadOnlyBindingList类

作者: (美)霍特卡(Lhotka,R.)著;王鑫译 出处:电子工业出版社博文视点  (  ) 砖  (  ) 好  评论 ( ) 条  进入论坛
更新时间:2008-01-28 13:59
关 键 词:  业务框架  Expert C# 2005 Business Objects中文版
阅读提示:《Expert C# 2005 Business Objects中文版》第3章介绍了创建类,以及所有的工具类及其功能。本文讲了ReadOnlyBindingList类。

3.2.12  ReadOnlyBindingList类

Csla.Core名字空间中最后的一个类型就是ReadOnlyBindingList<C>类了。该类在System.ComponentModel.BindingList<T>的基础上实现了一个只读的集合。标准的BindingList<T>类实现了支持数据绑定的一个可读写的集合,但是在很多情况下我们需要的是只读集合。例如,ReadOnlyBindingList就是Csla.ReadOnlyListBase、Csla.NameValueListBase和Csla.Validation. BrokenRulesCollection的基类。

这个类从BindingList继承而来。与所有的框架基类一样,它也是可以被序列化和abstract的:

[Serializable()]
public abstract class ReadOnlyBindingList<C> :
System.ComponentModel.BindingList<C>, Core.IBusinessObject
{
}
所有基本的集合和数据绑定行为都已经被BindingList实现了。实现只读集合需要覆盖一些方法来防止对集合的修改。当然,在某些时候,为了将数据装载到集合中,集合必须是可以读-写的。某个集合是否为只读的是由一个域和属性来控制的:

private bool _isReadOnly = true;

public bool IsReadOnly
{
get { return _isReadOnly; }
protected set { _isReadOnly = value; }
}

请注意,虽然IsReadOnly属性在读方面是public的,在修改方面却是protected的。用这种方法,任何代码都可以判断该集合是只读还是可读写的,但是只有该类的子类才能对该集合进行锁定或者解锁。
这个类包含一个构造器,该构造器通过设置一些BindingList基类中的属性,将在集合中可以编辑、删除或创建子对象的选项都关闭掉:
protected ReadOnlyBindingList()
{
AllowEdit = false;
AllowRemove = false;
AllowNew = false;
}

这个类其余的部分覆盖了BindingList中控制对集合的修改的方法。每个覆盖都检查IsReadOnly属性,并在有代码企图对只读集合进行修改的时候抛出一个异常。

这里只有ClearItems()和RemoveItem()方法还算复杂。这是因为AllowRemove通常被设置成false,并且必须要被临时地修改成true来允许操作(当集合不处于只读模式的时候)。例如,ClearItems()方法的代码如下:

protected override void ClearItems()
{
if (!IsReadOnly)
{
bool oldValue = AllowRemove;
AllowRemove = true;
base.ClearItems();
AllowRemove = oldValue;
}
else
throw new NotSupportedException(Resources.ClearInvalidException);
}

AllowRemove在操作结束后被恢复回它的原始值。

到这里就介绍完了Csla.Core名字空间里的所有类型。其余的实现可以在本书的下载代码中找到。接下来让我们继续讨论Csla.Validation名字空间中的类型。

【责任编辑:雪花 TEL:(010)68476606】

回书目      
发表
查看
我也说两句

匿名发表

(如果看不清请点击图片进行更换)


中 国 最 大 的 网 络 技 术 网 站 ·
技 术 成 就 梦 想
订阅技术快讯
电子杂志下载
名称:2007路由技术大全
简介:《2007路由技术大全》由51CTO.com网站特别策划制作,该书包括路由器技术、路由器产品、路由器配置、安全设置、路由器故障处理、路由器密码恢复,以及广大网友在实践使用中的心得经验和技巧文章,内容注重实用性,适用于初学者入门,也适合多年从业者提高,是一本实践和理论完
名称:网络安全精品应用黄皮书
简介:《2007精品网络安全黄皮书》包括了9个大类24个小类, 800余篇文章,内容包含了熊猫烧香病毒、DDOS攻击、ARP病等热点问题的介绍及解决方案。从病毒查杀、防范、系统、数据等各方面的安全设置到黑客技术的了解、防范,涉及到了安全应用的全部领域, 由浅至深内容全面。
名称:Vista精品应用黄皮书
简介:《Vista精品应用黄皮书》囊括了Vista的各方面内容。此次的精简版,是将里面的内容做了提取,便于用户下载和使用。内容包含了各种Vista的安装与实施、技巧与解析以及各种Vista相关学习文档和相关软件的安全下载。该电子书是了解和应用Vista人员必备的工具手册,并且也是第一本
关键字阅读
频道精选