我最近发现了 .NET Contracts API,虽然我不喜欢使用方法而不是扩展语法的实现方式(我认为Sing#做得对),但我更喜欢使用它们而不是旧的/常规方式使用 if 进行例如空值检查。
我也正在接近我的第一个 Contract.Ensures-calls,我偶然发现了一个问题,我们将如何在包含运行时遇到异常的 Contract.Ensures 的方法中处理异常?
合同一词。确保有点感觉就像我必须处理方法内部的异常并让我的类再次进入正确的状态,但如果我不能呢?
假设我们在这里有这个类:
public class PluginManager
{
private ILoadedFromAtCompileTimeUnknownAssembly extension;
public bool IsFinished { get; private set; }
public void Finish()
{
extension.Finish();
this.IsFinished = true;
}
}
我们可以在方法完成后使用 Contract.Ensures 来确保 IsFinished 为真吗?