【发布时间】:2008-11-24 09:59:05
【问题描述】:
当容器中有多个实现时,如何让 Castle Windsor 在运行时选择正确的接口植入。
例如,假设我有一个名为 IExamCalc 的简单界面,它通过计算来计算某人在该考试中的表现。
不,我们有几个像下面这样的实现,
public interface IExamCalc
{
int CalculateMark(ExamAnswers examAnswers)
}
public class WritenExam : IExamCalc
{
public int CalculateMark(ExamAnswers examAnswers)
{
return 4;
}
}
public class OralExam : IExamCalc
{
public int CalculateMark(ExamAnswers examAnswers)
{
return 8;
}
}
public class ExamMarkService
{
private IExamCalc _examCalc;
public ExamMarkService(IExamCalc examCalc)
{
_examCalc = examCalc;
}
public int[] CalculateExamMarks(ExamAnswers[] examAnswers)
{
IList<int> marks = new List<int>;
foreach(ExamAnswers examanswer in examaAnswers)
{
marks.Add(_examCalc.CalculateMark);
}
}
}
假设 ExamMarkService 正在通过 Windor 重新使用,我如何确保在构造函数中注入了正确的实现,这是多租户问题的一个示例吗?
希望一切都有意义
科林·G
【问题讨论】:
标签: dependency-injection inversion-of-control castle-windsor