我在這裏想要實現一些方法,將接口引用列表轉換爲它們各自的類類型,然後返回列表在某種意義上是唯一的。創建通用方法
下面是這些方法
public bool ValidateDIPObject(DIP dip)
{
// Validating Tabels
IsFilesHavingUniqueID(dip.Files);
// Validating Files
IsTablesHavingUniqueID(dip.Tables);
// ... continues
}
的
public bool IsFilesHavingUniqueID(List<IFile> files)
{
List<File> _files = files.ConvertAll(x => (File)x).ToList();
return _files.Distinct().ToList().Count == _files.Count;
}
public bool IsTablesHavingUniqueID(List<ITable> tables)
{
List<Table> _tables = tables.ConvertAll(x => (Table)x).ToList();
return _tables.Distinct().ToList().Count == tables.Count;
}
通話是有,我可以在一個通用的方式編寫代碼的任何方法。我必須用相同的模式編寫一堆方法,所以我認爲通用代碼將是最好的選擇。
請幫
'tables.ConvertAll(X => (T)x)'應該是'表格。廣告()'。 –
jmcilhinney
@jmcilhinney爲什麼?代碼編譯爲OP具有'List'作爲輸入。我也不知道OP在找什麼。正如我注意到的,'OfType'更可能是他們所需要的,因爲他們似乎想要過濾特定類型的項目(並且'Cast'不太可能是正確的,因爲它只是簡單地改變類型,而不像'ConvertAll '是的) –
它應該被施放,因爲正在進行演員陣容。要調用'ConvertAll'然後執行一次強制轉換肯定會奏效,但調用'Cast'會更好,因爲'Cast'是用於強制轉換的,也就是改變引用的類型,同時仍然引用同一個對象,'ConvertAll'用於轉換,即改變對象。 – jmcilhinney