gpt4 book ai didi

c# - 错误的 CA1812 警告 : "internal class that is apparently never instantiated..."

转载 作者:太空狗 更新时间:2023-10-29 17:40:19 30 4
gpt4 key购买 nike

我收到一个似乎是误报的代码分析警告。

CA1812 : Microsoft.Performance : 'MyClass.MyPrivateClass' is an internal class that is apparently never instantiated. If so, remove the code from the assembly. If this class is intended to contain only static methods, consider adding a private constructor to prevent the compiler from generating a default constructor.

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

类看起来像这样:

namespace Some.Namespace
{
public class MyClass
{
private class MyPrivateClass
{
public int Id { get; set; }
public ModelObject { get; set; }
}
}
}

我是这样使用的:

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

这种用法不算实例化吗?

最佳答案

我猜它正在检查 IL;并且真的 - IL 不包含 new MyPrivateClass指令 - 因为该语句可能针对 IQueryable<T> 运行,因此 lambda 是一个表达式树。它将包含一些 Expression.New , 和一些 typeof(MyPrivateClass) - 但没有 new MyPrivateClass .

在这种情况下,错误具有误导性。简单地压制它。

关于c# - 错误的 CA1812 警告 : "internal class that is apparently never instantiated...",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18226705/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com