【问题标题】:Code Contracts is not supported in Visual Studio 2017, How to implement it with PostSharp?Visual Studio 2017 不支持代码合同,如何使用 PostSharp 实现它?
【发布时间】:2018-01-30 22:33:53
【问题描述】:

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

在GitHubhere看这个项目的见解,好像这个项目已经死了。在过去的几年里,对所有 Visual Studio 版本的支持一直被延迟。在我看来,由于缺乏兴趣和支持,坚持在新项目中使用 Microsoft 的代码合同是很危险的。

您将如何使用 Postsharp 的面向方面的编程框架和 IL 代码编织来实现按合同设计?类不变量的实现会怎样?必须在与相关类交互的所有公共方法的开头和结尾检查类不变量的有效性。

【问题讨论】:

    标签: visual-studio-2017 aop postsharp code-contracts design-by-contract


    【解决方案1】:

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

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

    【讨论】:

    • 理论上,您可以自己使用 OnMethodBoudaryAspect、IAspectProvider 和程序集范围的多播来实现此功能,但这会很麻烦。
    • 感谢您的回复。
    猜你喜欢
    • 1970-01-01
    • 2017-10-30
    • 1970-01-01
    • 1970-01-01
    • 2018-05-18
    • 1970-01-01
    • 2011-07-24
    • 1970-01-01
    相关资源
    最近更新 更多