我想知道是否有人知道为什么在ServiceModel程序集中实现SynchronizedCollection 类。我看不到程序集名称与此(相对)通用类之间的任何连接。

最佳答案

此类非常具体,其名称甚至可能会引起误解-除了将某些操作(InsertAddClearIndexOflock (this.sync) {}等)包装在FirstOrDefault块中之外,它的内部实现几乎不执行任何操作,实际上并未使其同步(请参见this article中描述的问题-简而言之,诸如LINQ SynchronizedCollection之类的复合操作在ServiceModel上不是线程安全的,因为它们不获取锁定)。

它在public程序集本身中大量使用,并且可能仅由于某些ServiceModel类公开了此类型的公共(public)属性而被称为ServiceModel

所以我的猜测是:它被放到ServiceModel程序集中,因为它实际上并不属于BCL,而只是内部ojit_code需求的DRYish BCL namespace 扩展。

10-07 18:51