我试图在C#项目上使用fxCop作为C#编码标准的基础。
我正在使用的项目名为S#arp Architecture,可在此处免费获取:S#Arp Arch
现在,如果我运行fxCop(大部分内容已经修复),我需要为构造函数中的可覆盖方法修复CA2214 fxcop错误。
目前,一段违规代码如下:
public class Region : Entity, IHasAssignedId<int>
{
public Region(string description)
{
Check.Require(!string.IsNullOrEmpty(description));
this.Description = description;
}
protected Region()
{
}
[DomainSignature]
> public virtual string Description { get; protected set; }
public virtual void SetAssignedIdTo(int assignedId)
{
Id = assignedId;
}
}
大部分内容都以其他方式在其他cd文件中调用:
public static RegionDto Create(Region region)
{
if (region == null)
{
return null;
}
return new RegionDto()
{
Id = region.Id,
> Description = region.Description
};
}
我试过改变方法的类型(私有/受保护等),但fxCop和单元测试经常有冲突的需求,fxcop说它不喜欢带虚拟方法的构造函数,但是单位说这些方法应该是public /受保护的虚拟或受保护的内部虚拟,捕获22个小位?
所以,任何帮助修复此fxcop规则都将不胜感激,谢谢。
(错误发生在标有&gt;的行上,虚拟的get set方法,当更改时,另一个&gt;就是抱怨的地方)
答案 0 :(得分:3)
这很容易:“不要做那个”。代替:
private string _description;
public Region(string description)
{
Check.Require(!string.IsNullOrEmpty(description));
_description = description;
}
protected Region()
{
}
[DomainSignature]
public virtual string Description {
get {return _description;}
set {_description = value;}
}