我想知道是否有人知道为什么在ServiceModel程序集中实现SynchronizedCollection 类。我看不到程序集名称与此(相对)通用类之间的任何连接。
最佳答案
此类非常具体,其名称甚至可能会引起误解-除了将某些操作(Insert
,Add
,Clear
,IndexOf
,lock (this.sync) {}
等)包装在FirstOrDefault
块中之外,它的内部实现几乎不执行任何操作,实际上并未使其同步(请参见this article中描述的问题-简而言之,诸如LINQ SynchronizedCollection
之类的复合操作在ServiceModel
上不是线程安全的,因为它们不获取锁定)。
它在public
程序集本身中大量使用,并且可能仅由于某些ServiceModel
类公开了此类型的公共(public)属性而被称为ServiceModel
。
所以我的猜测是:它被放到ServiceModel
程序集中,因为它实际上并不属于BCL,而只是内部ojit_code需求的DRYish BCL namespace 扩展。