自从将合同引入 .NET 4.0 以来,我想知道微软是否像在 BCL 中那样将其传播到他们的所有类?
如果不是,那为什么?这种特性只有在标准库默认支持的情况下才有意义,对吧?
不是所有的 BCL。
考虑到代码合同还没有完全内置到 IDE 和语言中;这是一个单独的下载。毫无疑问,当它实现了更高的开发人员渗透率、增加了与 IDE 的集成以及 BCL 的完整注释时,我们将看到它开箱即用。
所有 BCL 中都没有添加任何代码合同。许多最常见的类都添加了注释,但整个 BCL 都没有。
这里的主要原因是时间。BCL 非常庞大,为所有 BCL 添加正确的合约是一项艰巨的任务。结果,此时,仅使 .Net 用户群的一小部分受益。如果合同越来越受欢迎,那么我相信它们在 BCL 中的使用也会增加(是的,我意识到不做一个会使另一个不太可能)
这个问题通过用户声明自定义合同程序集的能力得到缓解。这允许他们对遗漏的类型进行后期注释,并达到从合同的角度来看他们的代码库是干净的地步。