通知Resharper,只有当功能返回false时,OUT变量才会为null;



i具有以下函数,遵循tryget模式的删除param,如果null会返回false,如果不是null,则将返回true

public bool TryGetFileFormat(string extension, [CanBeNull] out IFileFormat fileFormatter)
{
    fileFormatter = Plugins?.FirstOrDefault(plugin => plugin?.FileExtension != null && plugin.FileExtension.Equals(extension));
    return (fileFormatter != null);
}

我然后使用以下代码调用该函数:

IFileFormat fileFormatPlugin;
if (_pluginLoader.TryGetFileFormat(extension, out fileFormatPlugin))
{
    fileFormatPlugin.DoStuff();

resharper然后警告我,fileformatplugin可能为null。我该如何告诉resharper,只有在函数返回false时才为null?

编辑我怀疑我可以以某种方式处理合同信号,但不确定语法。

以下合同注释会导致resharper仅警告null参考,如果您在函数返回false false

时使用该值
[ContractAnnotation("fileFormatter : null => false")]
public bool TryGetFileFormat(string extension, [CanBeNull]out IFileFormat fileFormatter){
    fileFormatter = Plugins?.FirstOrDefault(plugin => plugin?.FileExtension != null && plugin.FileExtension.Equals(extension));
    return (fileFormatter != null);
}

相关内容

  • 没有找到相关文章

最新更新