首页 > 解决方案 > 更改我的界面以处理新要求

问题描述

我有包含需要从文件导入数据的不同数据结构的逻辑的导入器。到目前为止,他们实现了我的 IImporter 接口:

public interface IImporter {
   string[] Header {get;}
   List<object> ImportData(File file);
}

然后我可以在我的控制器中使用 IoC 来传递接口并使其可测试:

public FileAController(IImporter AImporter)
...
public FileBController(IImporter BImporter)
...

此外,我将此接口传递给其他一些引用 Header 属性以获取某些逻辑的类。

然而,现在引入了另一种导入文件类型,但这也需要一些额外的上下文,比如说一个 ImportPreference,它决定了标题和导入逻辑。但是,我无法实现当前的 IImporter 接口,并且我不想更改接口方法以接收额外的参数,因为它只会用于这个特定的导入器。

我已经查看了访问者模式,但我不确定如何将其应用于我的具体案例。如何在不影响当前接口和类的情况下进行此更改?

标签: c#asp.net-core-mvc

解决方案


推荐阅读