有没有办法使用 resharper 属性指定 post 条件?

Is there a way to specify a post condition using resharper attributes?

假设我们有一个方法

internal static void NotNull<T>(T value)
    where T : class
{
    if (value == null)
    {
        throw new ArgumentNullException();
    }
}

有没有办法告诉 Resharper 的静态分析,传递给此方法的值之后永远不会为空?

有两种方法可以实现:

[JetBrains.Annotations.ContractAnnotation("halt <= null")]
public void NotNull(object obj)
{
  // ...
}

以及像

这样的扩展方法
[JetBrains.Annotations.NotNull]
public static T NotNull<T>(this T obj)
{
  // ...
  return obj;
}

我个人更喜欢第二个,因为它很流畅,你可以继续你的代码:)