2017-07-18 80 views
0

我有一個基礎抽象類,它在構造函數中調用私有驗證方法。對於其後代的一部分,我想跳過這個檢查。這個類有太多的用法,我不能從基類中移動驗證。空接口或公開驗證

哪個是更好的解決方案

  • 創建一個空的接口,以類來實現,這將跳過此檢查
  • 揭露這個屬性,使其受保護的虛擬和派生類應該跳過空體覆蓋它檢查

(任何其他更好的解決方案也將被讚賞)

+0

你可以發佈你目前的? – niksofteng

+0

一個基類帶有很多不可選參數的支付(這就是爲什麼我認爲可選參數不是一個好選擇),在構造函數中驗證付款和它的逆向付款和這個類的後代之間的貨幣(有些應該跳過這個驗證) –

回答

1

如果考慮應用只屬於這個班級,我會選擇第二種辦法。如果在更多的類中會出現這種情況,那麼它會代表一些獨立於類的行爲,我會選擇第一種選擇(那麼也可以在需要使用類而不使用檢查的情況下使用多態)。

0
public abstract class BaseClass { 
    public BaseClass(bool? validate = true) { 
     if (validate.HasValue && validate.Value) { 
      Validate(); 
     } 
    } 

    private void Validate() { } 
} 

public class ChildClass1 : BaseClass { 
    public ChildClass1() : base() { } 
} 

public class ChildClass2 : BaseClass { 
    public ChildClass2() : base(false) { } 
}