我有以下情况:我想根据其结构识别CSV文件。结构可以简单地表示“列名称”,但可以想象更复杂的结构定义,其中包括CSV文件的更多属性。例如“列名和分隔符”或“文件名满足模式”等等。
这就是为什么我想创建一个接口,代表这种结构定义的所有类都需要实现。最简单的定义是:
interface ICSVFormatDefinition {
bool isFileInThisFormat(string filename);
static ICSVFormatDefinition createFormatFromFile(string filename);
}
但是现在我想要一个静态方法来分析定义结构所需的文件元素并返回一个拟合结构类。像这样:
createFormatFromFile
此示例中的something.value = getVariable('id'); // { id : 'Adam Smith' }
方法当然在接口的每个实现中都是不同的,因为只查看文件名,而另一个可以查看列名等等。
但是,您无法在C#中的接口中声明静态方法。您也不能在接口中将其声明为实例方法并将其实现为静态。
我现在的问题是:
提前致谢!
答案 0 :(得分:4)
createFormatFromFile
方法,最好在接口和非静态中声明它。答案 1 :(得分:1)
Interface的主要目的是定义与对象交互的契约。
静态方法不适用于对象。他们是为了上课。
您可能将createFormatFromFile()放在错误的位置。 关于对象创建,我建议使用Factory / Abstract Factory / Builder设计模式。
链接:http://www.dofactory.com/net/factory-method-design-pattern