電卓:のStructureMap:ネストされた依存関係の具体的な種類を選択してください
public interface ICalculator
{
int Calculate(int a, int b);
}
public class Calculator : ICalculator
{
private readonly ICalculatorStrategy _calculatorStrategy;
public Calculator(ICalculatorStrategy calculatorStrategy)
{
_calculatorStrategy = calculatorStrategy;
}
public int Calculate(int a, int b)
{
return _calculatorStrategy.Calculate(a, b);
}
}
電卓stragies:
public interface ICalculatorStrategy
{
int Calculate(int a, int b);
}
public class AdditionCalculator : ICalculatorStrategy
{
public int Calculate(int a, int b)
{
return a + b;
}
}
public class MultiplyCalculator : ICalculatorStrategy
{
public int Calculate(int a, int b)
{
return a * b;
}
}
電卓の使用法:
public class CalculatorUsageOne
{
private readonly ICalculator _calculator;
public CalculatorUsageOne(ICalculator calculator)
{
_calculator = calculator;
}
public void Process()
{
Console.WriteLine(_calculator.Calculate(6, 5));
}
}
public class CalculatorUsageTwo
{
private readonly ICalculator _calculator;
public CalculatorUsageTwo(ICalculator calculator)
{
_calculator = calculator;
}
public void Process()
{
Console.WriteLine(_calculator.Calculate(6, 5));
}
}
のStructureMapレジストリ:
public class DependencyRegistry : Registry
{
public DependencyRegistry()
{
For<ICalculatorStrategy>().Use<AdditionCalculator>().Named("Addition");
For<ICalculatorStrategy>().Use<MultiplyCalculator>().Named("Multiply");
For<ICalculator>().Use<Calculator.Calculator>();
}
}
CalculatorUsageOneの場合は、番号を追加したい(AdditionCalculator)。 CalculatorUsageTwoの場合は、数値を掛けたい(MultiplyCalculator)。
どのようにStructureMapでこれを達成できますか?
@A。 「とにかく、ここでジェネリックを使って依存関係をより明示的に表示することを考えます。これはどうやって見えますか? – Rookian
@Rookian、私はジェネリックについてのいくつかの考えで私の答えを編集しました。 – NOtherDev
@A。 ICalulatorをどうすればテストできますか?それはまったく可能ですか、それとも私がそれをどうやって偽造しますか? –
Rookian