代码分析警告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警告。 BusinessEntityType
和AuditLogCommand
方法参数都是枚举。 我不知道这里有什么问题,因此我不确定如何满足警告。
谢谢。
您的一个或多个属性是虚拟的吗? 那就是为什么,因为CA2214是“不要在构造函数中调用可覆盖的方法”警告。
以下是MSDN规则的推理:
调用虚方法时,直到运行时才会选择执行该方法的实际类型。 当构造函数调用虚方法时,调用该方法的实例的构造函数可能尚未执行。
这意味着如果有人从您的类inheritance并覆盖在构造函数中访问的方法或属性 – 那么在inheritance类的构造函数运行之前,将覆盖重写实现。 如果重写实现依赖于构造函数中设置的状态,则可能会导致问题。
要满足警告,您需要使构造函数中访问的属性和方法非虚拟(如果适当,可以使类型密封)。
上述就是C#学习教程:代码分析警告2214 – 如何最好地修复?分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/cdevelopment/1003753.html