值
规则 ID
CA1812
类别
“性能”
修复是中断修复还是非中断修复
非中断
原因
永远不会实例化内部(程序集级别)类型。
规则说明
此规则尝试查找对该类型其中一个构造函数的调用,并在找不到调用时报告冲突。
此规则不会检查以下类型:
值类型
抽象类型
枚举
委托
编译器发出的数组类型
无法实例化且仅定义 static(在 Visual Basic 中为 Shared)方法的类型。
如果将 System.Runtime.CompilerServices.InternalsVisibleToAttribute 应用于正在分析的程序集,那么此规则不会标记标记为 internal(在 Visual Basic 中为 Friend)的类型,因为友元程序集可能会使用字段。
如何解决冲突
若要解决此规则的冲突,请删除类型或添加使用该类型的代码。 如果类型仅包含 static 方法,请将以下内容其中之一添加到类型,以阻止编译器生成默认的公共实例构造函数:
适用于 C# 类型的 static 修饰符面向 .NET Framework 2.0 或更高版本。
面向 .NET Framework 版本 1.0 和 1.1 的类型的专用构造函数。
何时禁止显示警告
禁止显示此规则的警告是安全的。 建议在以下情况时取消显示此警告:
类通过后期绑定反射方法(如 System.Activator.CreateInstance)创建。
该类在控制反转 (IoC) 容器中注册为依赖项注入模式的一部分 。
类由运行时或 ASP.NET 自动创建。 自动创建的类的示例包括实现 System.Configuration.IConfigurationSectionHandler 或 System.Web.IHttpHandler 的类。
类作为具有 new 约束的类型参数进行传递。 以下示例将由规则 CA1812 进行标记:
internal class MyClass
{
public void DoSomething()
{
}
}
public class MyGeneric<T> where T : new()
{
public T Create()
{
return new T();
}
}
MyGeneric<MyClass> mc = new MyGeneric<MyClass>();
mc.Create();
相关规则
CA1801:检查未使用的参数
本文系外文翻译,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文系外文翻译,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。