我正在编写一些导入文件的代码,这些文件将根据描述文件布局的模板导入定界或固定宽度的文件。在接口内实现接口
我已经创建了一个接口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
我会退后一步,问为什么你有接口。是否有三个类实现每个接口,但除了对象之外没有公共基类? –