【发布时间】:2019-08-30 05:57:59
【问题描述】:
我有一个自定义扩展方法来检查Guid? 值:
public static bool IsNullOrDefault(this Guid? guid)
{
return !guid.HasValue || guid.value == Guid.Empty;
}
当我在代码中使用该方法时,我希望 Rider 会在可能的 System.InvalidOperationException 断言中考虑该方法。但事实并非如此。
public void Foo(Guid? guid)
{
if (guid.IsNullOrDefault())
{
throw new Exception();
}
var x = guid.Value;
^ There is still a yellow squiggle here, saying Possible System.InvalidOperationException
...
}
我尝试通过覆盖自定义(语句)模式来创建自己的空值检查模式:
if ($EXPR$.IsNullOrDefault()) throw new System.ArgumentNullException($NAME$);
但这也不起作用。如何配置 Rider 以将我的自定义方法视为等同于 guid.HasValue 或 guid != null?
【问题讨论】:
-
如果您使用
guid == null而不是!guid.HasValue,它的行为是否符合您的预期? -
@mjwills
guid == null没有帮助。我必须先检查注释......但我有一些担忧,因为团队的一部分仍在使用 Visual Studio,他们可能缺少 JetBrains 注释程序集。