2017-06-20 57 views

回答

4

您可以使用合同註釋來做到這一點,但在另一個答案中提供的方式對我不起作用(即 - 仍然會產生警告)。但是這一個工程:

public static class Extensions { 
    [ContractAnnotation("null => false; notnull => true")] 
    public static bool Exists(this object toCheck) { 
     return toCheck != null; 
    } 
} 

要獲得ContractAnnotationAttribute - 推薦的方法是安裝JetBrains.Annotations NuGet包。如果你不想安裝軟件包 - 進入Resharper> Options> Code Annotations並點擊「copy implementation to clipboard」按鈕,然後將其粘貼到項目的任何位置(確保不要更改命名空間)。

+0

謝謝。可以應用這些註釋而無需修改代碼或依賴使用resharper庫? - Sam Holder剛纔編輯 添加評論 –

+0

謝謝!多數民衆贊成在 –

+0

我已經更新了我的答案與關於不使用他們的nuget包的信息。至於「不修改源代碼」 - 不知道你的意思,你必須應用該屬性,所以這部分源代碼應該修改(但似乎不是問題)。儘管如此,不應以任何方式修改_uses_此方法的源代碼。 – Evk

3

您可以使用"Contract Annotation Syntax"向Resharper表明某種方法在某些情況下不能正常返回,例如,當一個參數爲空時。

爲了您的例子中,你可以做這樣的事情:

[ContractAnnotation(toCheck:notnull => true] 
public static bool Exists(this object toCheck) 
{ 
    return toCheck != null; 
} 

toCheck:null => true告訴ReSharper的,如果toCheck不爲null,該方法將返回true

[編輯]更新的鏈接指向最新的Resharper文檔。

+0

謝謝。可以應用這些註釋而無需修改代碼或依賴使用resharper庫? –

相關問題