我有以下代码:
public partial class AuditLog : IBusinessEntity
{
public BusinessEntityType EntityType { get { return BusinessEntityType.AuditLog; } }
/// <summary>
/// Constructor accepting parameter initialization arguments
/// </summary>
/// <param name="userName"></param>
/// <param name="entity"></param>
/// <param name="command"></param>
/// <param name="commandText"></param>
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;
}
}
Run Code Online (Sandbox Code Playgroud)
这会生成CA2214警告.的BusinessEntityType和AuditLogCommand方法参数都是枚举.我不知道这里有什么问题,因此我不确定如何满足警告.
谢谢.
dri*_*iis 14
您的一个或多个属性是虚拟的吗?那就是为什么,因为CA2214是"不要在构造函数中调用可覆盖的方法"警告.
以下是MSDN规则的推理:
调用虚方法时,直到运行时才会选择执行该方法的实际类型.当构造函数调用虚方法时,可能没有执行调用该方法的实例的构造函数.
这是什么意思是,如果有人从你的类继承,并覆盖了在访问方法或属性的构造-那么对于继承类的构造函数运行之前的重写实现将受到重创.如果重写实现依赖于构造函数中设置的状态,则可能会导致问题.
要满足警告,您需要使构造函数中访问的属性和方法非虚拟(如果适当,可以使类型密封).
| 归档时间: |
|
| 查看次数: |
5910 次 |
| 最近记录: |