我有以下场景:
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}因此无法添加需求
这里最好的事情是什么?我看到的选项包括
Contract.Assume
请注意readonly
,在构造函数中设置值后,该字段是如此,因此无法更改.因此,代码合同的警告似乎有点无关紧要.