1

C#コーディング標準の一種の基礎として、C#プロジェクトでfxCopを使用しようとしています。

私が使用しているプロジェクトは 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
    };
}

メソッドのタイプ (private/protected など) を変更しようとしましたが、fxCop と単体テストのニーズが競合することがよくあります。保護された内部仮想、少し 22 をキャッチしますか?

したがって、この 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 に答える