【问题标题】:Override [NotNull] Attribute correctly正确覆盖 [NotNull] 属性
【发布时间】:2015-09-05 14:32:08
【问题描述】:

我从ArrayList 继承并覆盖Add 方法(见下文)。 奇怪的是Add() 方法将对象值参数标记为[NotNull],而documentation 表示“此值可以是空引用”。

无论如何,我现在已将其标记为 [CanBeNull](通过 ReSharper 注释属性)。 但 IntelliSense 仍然为我提供了将参数标记为 [NotNull] 的缓存文档。

为什么不覆盖文档?

/// <summary>
/// Bla bla
/// </summary>
/// <param name="value">
/// This Attribute is marked as CanBeNull.
/// </param>
/// <returns></returns>
public override int Add([CanBeNull] object value)
{
    if (value != null)
    {
        // Do sth.
    }
}

【问题讨论】:

  • 这不是一个属性,它是一个方法参数——使用正确的术语以免混淆任何愿意回答的人。另外,请考虑使用List&lt;T&gt; 而不是ArrayList

标签: c# inheritance resharper


【解决方案1】:

虽然用[CanBeNull] 覆盖的[NotNull] 属性受到ReSharper 的可空性分析的尊重,并且也显示在Ctrl+Shift+F1 窗口中,但ReSharper 在参数信息中错误地忽略了它们。

我创建了RSRP-447900

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-19
    • 1970-01-01
    相关资源
    最近更新 更多