Visual Studio 2017 不支持代码契约,如何使用 PostSharp 实现它?

Code Contracts is not supported in Visual Studio 2017, How to implement it with PostSharp?

在 Microsoft 撰写此问题 CodeContracts 时,Visual Studio 2017 年不支持实现 .NET 按合同设计的 Visual Studio 扩展。

在GitHubhere看这个项目的见解,看来这个项目已经死了。在过去的几年中,所有 visual studio 版本一直延迟对此扩展的支持。在我看来,由于缺乏兴趣和支持,坚持使用 Microsoft 的代码合同进行新项目是危险的。

您将如何使用 Postsharp 的面向方面编程框架和 IL Code Weaving 来实施契约式设计? Class 不变量的实现看起来如何? Class 不变量的有效性必须在与所讨论的 class 交互的所有 public 方法的开始和结束时进行检查。

PostSharp 提供适用于方法参数、字段和属性的代码契约。这些记录在 http://doc.postsharp.net/contracts.

Class 不变量(如 https://docs.microsoft.com/en-us/dotnet/framework/debug-trace-profile/code-contracts#invariants 中所述)不是开箱即用的。