错误的CA1812警告:"内部类显然从未实例化......"

Nie*_*Wet 9 c# code-analysis

我得到的代码分析警告似乎是假阳性.

__CODE__

我如何摆脱这个警告?除非我确定无法避免警告,否则我宁愿不抑制警告.

这些类看起来像这样:

namespace Some.Namespace
{
    public class MyClass
    {
        private class MyPrivateClass
        {
            public int Id { get; set; }
            public ModelObject { get; set; }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我这样使用它:

private IQueryable<MyPrivateClass> GetMyPrivateClasses()
{
    return this.Repository().All()
        .Select(m => new MyPrivateClass { Id = m.Id, ModelObject = m };
}
Run Code Online (Sandbox Code Playgroud)

这种用法不算作实例化吗?

Mar*_*ell 16

我想它正在研究IL; 并且真实地 - IL不会包含new MyPrivateClass指令 - 因为该声明大概是反对的IQueryable<T>,因此lambda是表达式树.它将包含一些Expression.New,有些typeof(MyPrivateClass)- 但没有new MyPrivateClass.

在这种情况下,错误会产生误导.简单地压制它.

  • 我让它工作了,但在警告消失之前必须重新启动 VS2019。#pragma warning禁用CA1812 //类**用于JSON反序列化....#pragma warning恢复CA1812 (3认同)
  • 它甚至在警告描述中明确地说:http://msdn.microsoft.com/en-us/library/ms182265.aspx (2认同)