簡體   English   中英

構造函數中的可重寫方法-幫助修復

[英]Overridable Methods In Constructors -Help to Fix

我試圖在C#項目上使用fxCop作為C#編碼標准的基礎。

Im正在使用的項目稱為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方法,當更改時,另一個>是它抱怨的地方)

這很容易:“不要那樣 ”。 代替:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM