2016-01-29 27 views
4

我有一個類被用於ConfirmNonInventoryViewModel,但隨後不得不想出另一個非常相似但具有一個不同屬性的對象類型(隨着功能的增加)。C#抽象類的用法 - 獲取錯誤不一致的可訪問性

所以我想將這個原始類轉換爲基類,然後創建2個派生類來解釋2個唯一對象變體。但由於我的代碼已經使用原始類並且不希望它,所以開發人員不會直接使用該基類,我認爲將其標記爲abstract將阻止它被使用並使其成爲可能只有派生的變體可以使用。

但是這給了我錯誤,如Inconsistent Accessibility: base class is less accessible than derived class。所以我想我誤解了抽象類的用途。

如何滿足上述要求?

public class ConfirmWorkOrderNonInventoryViewModel : ConfirmNonInventoryViewModel 
{ 
    [Display(Name = "Part:")] 
    public int WorkOrderDetailId { get; set; }  
} 

public class ConfirmShipOrderNonInventoryViewModel : ConfirmNonInventoryViewModel 
{ 
    [Display(Name = "Order:")] 
    public int OrderHeaderId { get; set; } 
} 

abstract class ConfirmNonInventoryViewModel 
{ 
    [Display(Name = "Part:")] 
    public int OrderDetailId { get; set; } 

    [Display(Name = "Material:")] 
    public string ItemDescription { get; set; } 

    [Display(Name = "Est Qty:")] 
    public decimal EstimatedQty { get; set; } 

    [Required] 
    [Display(Name = "Act Qty:")] 
    [UIHint("TextBoxFor_50w")] 
    public decimal? ConfirmedQty { get; set; } 
} 

回答

5

只需添加public到您的類,所以它會成爲:

public abstract class ConfirmNonInventoryViewModel{ 
    //... 
} 

這樣,你的基類有相同的可訪問性的派生類。

+0

謝謝......簡單......而且很明顯。 –