我正在編寫一些導入文件的代碼,這些文件將根據描述文件佈局的模板導入定界或固定寬度的文件。在接口內實現接口
我已經創建了一個接口IFileTemplate:
public interface IFileTemplate
{
string Name { get; set; }
bool IgnoreEmptyLines { get; set; }
}
其中使用由DelimitedFileTemplate
類和FixedWidthFileTemplate
類。
我也有確定各組成一個模板列的接口:
public interface IFileTemplateColumn
{
int ID { get; set; }
string Name { get; set; }
bool Ignore { get; set; }
}
這個接口,然後使用由DelimitedTemplateColumn
類和FixedWidthTemplateColumn
類。
由於DelimitedFileTemplate和FixedWidthFileTemplate類都將有列的列表我做了列表中IFileTemplate列中的一員:
List<IFileTemplateColumn> Fields { get; set; }
我的問題是,當我來執行列表在DelimitedFileTemplate和FixedWidthFileTemplate類,例如:
public class FixedWidthFileTemplate : IFileTemplate
{
public int ID { get; set; }
public string Name { get; set; }
public List<FixedWidthFileTemplateColumn> Fields { get; set; }
}
如果我試着和List<DelimitedFileTemplateColumn>
或List<FixedWidthFileTemplateColumn>
實現List<IFileTemplateColumn>
那麼編譯器抱怨說,他們不匹配List<IFileTemplateColumn>
。
我可以理解這一點,但它似乎錯誤沒有在ITemplateInterface列列表。我能想到的唯一方法就是讓分隔符和固定寬度類使用List<IFileTemplateColumn>
,並讓屬性getter將列表轉換爲分隔列或固定寬度列列表,但似乎有點代碼味道。任何人都可以提出一個更好的方法來做到這一點
如果您爲已實現接口的類添加代碼將會更好。它會更具可讀性。 –
@FaisalHafeez好的建議,現在更新。 – GrandMasterFlush
我會退後一步,問爲什麼你有接口。是否有三個類實現每個接口,但除了對象之外沒有公共基類? –