构造函数中的可覆盖方法 - 帮助修复

时间:2009-07-20 11:15:08

标签: c# constructor fxcop s#arp-architecture

我试图在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;就是抱怨的地方)

1 个答案:

答案 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;}
}