通知 resharper out 变量只有在函数 returns false 时才会为 null;

Inform resharper that an out variable will only be null if the function returns false;

我有以下函数,它遵循带有输出参数的 TryGet 模式,如果 null 将 return false,如果不为 null,它将 return 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 可能为空。我怎么能告诉 resharper 只有当函数 returns false 时它才会为空?

编辑我怀疑我可以用 ContractAnnotation 以某种方式处理这个问题,但不确定语法。

如果您在函数返回 false 时使用该值,以下契约注释会导致 resharper 仅警告空引用

[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);
}