Csharp/C#教程:代码分析警告2214 – 如何最好地修复?分享


代码分析警告2214 – 如何最好地修复?

我有以下代码:

public partial class AuditLog : IBusinessEntity { public BusinessEntityType EntityType { get { return BusinessEntityType.AuditLog; } } ///  /// Constructor accepting parameter initialization arguments ///  ///  ///  ///  ///  public AuditLog(string userName, BusinessEntityType entity, AuditLogCommand command, string commandText) { this.Timestamp = DateTime.Now; this.UserName = userName; this.Entity = entity.ToString(); this.Command = command.ToString(); this.CommandText = commandText; } } 

这是生成CA2214警告。 BusinessEntityTypeAuditLogCommand方法参数都是枚举。 我不知道这里有什么问题,因此我不确定如何满足警告。

谢谢。

您的一个或多个属性是虚拟的吗? 那就是为什么,因为CA2214是“不要在构造函数中调用可覆盖的方法”警告。

以下是MSDN规则的推理:

调用虚方法时,直到运行时才会选择执行该方法的实际类型。 当构造函数调用虚方法时,调用该方法的实例的构造函数可能尚未执行。

意味着如果有人从您的类inheritance并覆盖在构造函数中访问的方法或属性 – 那么在inheritance类的构造函数运行之前,将覆盖重写实现。 如果重写实现依赖于构造函数中设置的状态,则可能会导致问题。

要满足警告,您需要使构造函数中访问的属性和方法非虚拟(如果适当,可以使类型密封)。

上述就是C#学习教程:代码分析警告2214 – 如何最好地修复?分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/cdevelopment/1003753.html

(0)
上一篇 2021年12月28日
下一篇 2021年12月28日

精彩推荐