我有以下函数,它遵循 TryGet 模式,带有一个输出参数,如果 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 可能为空。我如何告诉 resharper,如果函数返回 false,它只会为 null?
编辑我怀疑我可以用 ContractAnnotation 以某种方式处理这个问题,但不确定语法。