如何在CollectionBase的派生类里面实现公共静态方法Synchronized() 在命名空间System.Collections里面,一些常用的集合类,如,ArrayList、Stack、Queue等,都具有一个名为Synchronized()的公共静态方法。该方法能够为用户提供一个返回同步(线程安全)的列表包装。请问如何在CollectionBase的派生类里面实现作用相同的公共静态方法Synchronized() 。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 一般是建立一个Sync类,用Reflector看一下ArrayList是怎么实现的http://www.aisto.com/roeder/dotnet/ 怎么找不到ArrayList?加我啊:496711172 1、继承你定义的集合类,比如class SyncXxxCollection : XxxCollection2、添加一个构造函数,接受参数类型为XxxCollection:public SyncXxxCollection(XxxCollection list){ this.List = list;}3、重写所有方法,比如:public override int Add(object value){ lock((base as ICollection).SyncRoot) { return this.List.Add(value); }}4、重写IsSynchronized属性返回true5、在XxxCollection中添加静态Synchronized方法:public static XxxCollection Synchronized(XxxCollection list){ if (list == null) { throw new ArgumentNullException("list"); } return new SyncXxxCollection(list);} [实例]列举一些让我胸口汹涌澎湃的代码 求类的动态属性方法 vs 2008 打上 sp1 包出现以下错误 问个小程序 询问下论坛上有无.net下插件(Plugin)开发经验的兄弟? winform 的datagrid中怎么设置column的宽度,急啊 C#winform问题,请前辈们回答 WeifenLuo.WinFormsUI.Docking 如何实现datagrid的多标题? 谁有C#连接DB2 7.2的经验,我用OleDbCommandBuilder生成不了Update、Delete等语句。 一个有意思的话题大家都进来看看!~ 断点下察看变量的值(初学者)
2、添加一个构造函数,接受参数类型为XxxCollection:
public SyncXxxCollection(XxxCollection list)
{
this.List = list;
}
3、重写所有方法,比如:
public override int Add(object value)
{
lock((base as ICollection).SyncRoot)
{
return this.List.Add(value);
}
}
4、重写IsSynchronized属性返回true
5、在XxxCollection中添加静态Synchronized方法:
public static XxxCollection Synchronized(XxxCollection list)
{
if (list == null)
{
throw new ArgumentNullException("list");
}
return new SyncXxxCollection(list);
}