为了账号安全,请及时绑定邮箱和手机立即绑定

C#泛型工厂模式不说明泛型的类型

C#泛型工厂模式不说明泛型的类型

C#
至尊宝的传说 2021-06-04 14:09:28
我正在处理一个 C# 项目来解析不同类型的文件。为了做到这一点,我创建了以下类型的类结构:interface FileType {}    class FileType1 : FileType {}    class FileType2 : FileType {}abstract class FileProcessor<T> {}    class Processor_FileType1 : FileProcessor<FileType1> {}     class Processor_FileType2 : FileProcessor<FileType2> {} 现在,我想创建一个工厂模式,它只采用文件的路径,并根据文件的内容决定要实例化 2 个处理器中的哪一个。理想情况下(并且我知道此代码不起作用),我希望我的代码如下所示:class ProcessorFactory{    public FileProcessor Create(string pathToFile)    {        using (var sr = pathToFile.OpenText())        {            var firstLine = sr.ReadLine().ToUpper();            if (firstLine.Contains("FIELD_A"))                return new Processor_FileType1();            if (firstLine.Contains("FIELD_Y"))                return new Processor_FileType2();        }    }}问题是编译器错误,Using the generic type 'FileProcessor<T>' requires 1 type arguments 因此我的程序可以执行以下操作:public DoWork(){    string pathToFile = "C:/path to my file.txt";    var processor = ProcessorFactory.Create(pathToFile);}并且processor变量将是 aProcessor_FileType1或Processor_FileType2。我知道我可以通过更改Createto take a type 参数来做到这一点,但我希望从那时起我就不必这样做了,它会扼杀根据文件中的数据来计算它的想法。有任何想法吗?
查看完整描述

1 回答

  • 1 回答
  • 0 关注
  • 215 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信