1

我试图在 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 说它不喜欢使用虚拟方法的构造函数,但单元说方法应该是公共/受保护的虚拟或受保护的内部虚拟,捕获 22 个 lil 位?

因此,我们将不胜感激修复此 fxcop 规则的任何帮助,谢谢。

(错误发生在标有 > 的行上,即虚拟 get set 方法,当更改另一个 > 时,它会抱怨)

4

1 回答 1

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;}
}
于 2009-07-20T11:32:43.720 回答