我正在閱讀具有幾個常見屬性和幾個不同屬性的不同類型CSV文件的用戶輸入。我創建了一個基類TestCaseData和如下派生類:如何爲派生類對象編寫驗證方法
public abstract class TestCaseData
{
public abstract string ID { get; set; }
public abstract string Name{ get; set; }
}
public class DerivedClassOne :TestCaseData
{
public override string ID { get; set; }
public override string Name{ get; set; }
pubic string DerivedOneProperty{ get; set; }
}
public class DerivedClassTwo :TestCaseData
{
public override string ID { get; set; }
public override string Name{ get; set; }
pubic string DerivedTwoProperty{ get; set; }
}
我讀的CSV文件,並創建派生類的列表,如下面
List<TestCaseData> lstTestCaseData = MethodCallToReturnListOf_DerivedOneClassFromCSV();
由於分配給基類的列表現在我有lstTestCaseData
我必須驗證用戶輸入,也是我無法找到一種方法來編寫一種方法來驗證類型爲DerivedOneProperty
或DerivedTwoProperty
的用戶輸入,因爲他們有自己的屬性。任何人都可以幫助我嗎?
我有方法的簽名類似的東西
public string ValidateCompleteFile(List<TestCaseData> TestCaseInputList, out bool IsInputValid)
似乎很合理,雖然我可能更喜歡封裝在類構造函數中的驗證(雖然有時這是不可能的,因爲第三方庫進行解析)。我認爲能夠假設每個創建的對象都是有效的,而不是讓客戶端負責調用全部地方的'IsValid()',這就更加清晰了。 – kai
我同意這不是最佳解決方案,但由於該問題討論了現有的ValidateCompleteFile方法,因此只需從此處調用此新的Validate方法。 – TomDoesCode
其實問題是我使用模型TestCaseData,DerivedClassOne,DerivedClassTwo編寫客戶端代碼,並且無法修改類定義(它不提供Validate方法)。所以現在在客戶端代碼中需要編寫一個單獨的驗證方法,我不想爲DerivedClassOne類型和DerivedClassTwo類型編寫兩個不同的驗證方法。 –