将表单事件连接到不同的对象

时间:2012-01-20 16:39:54

标签: c# winforms

我正在编写一个Windows窗体应用程序,它读取文件,处理它然后提交更改。

根据某些情况,当我从表单中单击“处理按钮”时,我希望它与特定对象进行交互,例如,根据文件的扩展名,文件由处理该文件的特定类处理文件类型。

在应用程序架构方面,最好的方法是什么?

2 个答案:

答案 0 :(得分:2)

例如,.txt文件由TextParser处理,.csv文件由CSVParser处理,.doc文件由MSWordParser处理,其他所有文件由GenericParser处理,等等。 >

嗯,首先要创建一个接口,即IParser,以便每个类都有一个.Parse(文件)方法。

接下来是将文件扩展名字符串与类匹配的任务。我想到的第一件事是字典。密钥将是文件扩展名作为字符串,值将是该类型文件扩展名的解析器。在进行任何处理之前,您将使用您希望支持的所有文件扩展名填充字典。

有一些假设可以很好地运作: - 您没有大量受支持的文件扩展名。 - 可以重复使用解析器的一个实例 - 更新解析器并不是特别昂贵;除了语言需要对新对象执行的操作之外,初始化最少。

答案 1 :(得分:0)

我会选择类似工厂模式的东西。

public interface IFileParser
{
    void perse(string fileToParse);
}


    public static class FileParserFactory
    {
        public static IFileParser GetParser(string fileToParse)
        {
            FileInfo file = new FileInfo(fileToParse);
            IFileParser parserToReturn = null;

            switch (file.Extension.ToLower())
            {
                case "csv": parserToReturn = new CSVFileParser(fileToParse);
                    break;
                case "txt": parserToReturn = new TextFileParser(fileToParse);
                    break;
            }

            return parserToReturn;
        }
    }