【发布时间】:2014-02-21 09:22:54
【问题描述】:
这个问题的标题看起来很奇怪,但我不知道如何清楚地命名它。
问题是:我有一个服务器,它可以接受短信并有 3 个类:Pipeline、IParser 和 ISolver。 Pipeline 结合了解析器和求解器,因此用户可以对解析器和求解器进行不同的配置,例如,他可以将一个解析器用于 3 个或更多求解器。所有这些东西都是使用反射加载的(为解析器和求解器加载具体类)。这与责任链非常相似,但有以下区别:解析器将文本文件解析为某个类,我们称之为SolverData。但问题是不同的求解器应用不同的数据。那么如何在加载此应用程序时检查解析器输出类型和求解器输入类型的正确性?
当我没有使用 DI 并且只有一种类型的数据用于求解器时,这是我的代码示例:
public class Pipeline
{
private ISolver _itsSolver;
private IParser _itsParser;
public Initialize()
{
//init code
}
public string Execute(string userInput)
{
return _itsSolver.Execute(_itsParser.Parse(userInput));
}
}
public interface ISolver
{
string Execute(SolverData data);
}
public interface IParser
{
SolverData Parse(string input);
}
【问题讨论】:
-
一个示例代码会很有帮助
-
同意米勒 - 请显示您有问题的代码。如果这是一个通用问题,与特定代码无关,那么最好在programmers.stackexchange.com 上提问
-
抱歉,在我的帖子中添加了代码。所以我的问题是 SolverData 类,我的一些求解器需要 AnotherSolverData claa 对象
标签: c# .net design-patterns dependency-injection