相关疑难解决方法(0)

Code Contracts [Type]实现接口方法{Interface.Method}因此无法添加需求

我有以下场景:

public interface ISomething
{
    void DoStuff();
    //...
}

public class Something : ISomething
{
    private readonly ISomethingElse _somethingElse;
    //...

    public Something (ISomethingElse somethingElse)
    {
         Contract.Requires(somethingElse != null);
        _somethingElse = somethingElse;
    }

    public void DoStuff()
    {
        // *1* Please look at explanation / question below
        _somethingElse.DoThings();
    }
 }
Run Code Online (Sandbox Code Playgroud)

在第1行并且打开静态检查器时,我会收到一条警告,说明_somethingElse可能为空,如果我添加合同,它会给我错误

[Type]实现接口方法{Interface.Method}因此无法添加需求

这里最好的事情是什么?我看到的选项包括

  1. 一个保护条款,虽然看起来有点极端
  2. 一个 Contract.Assume
  3. 一个我没想过的隐藏的第三个选项

请注意readonly,在构造函数中设置值后,该字段是如此,因此无法更改.因此,代码合同的警告似乎有点无关紧要.

c# code-contracts

21
推荐指数
1
解决办法
4685
查看次数

标签 统计

c# ×1

code-contracts ×1