从控制台我以格式[command] [position] [value]获取命令,例如乘以2 3
我应该根据命令操纵一个整数数组。
例如,如果我在执行"乘以2 3"之后有int[] arr = new int[] { 0, 2, 0 };
命令数组应该看起来像{ 0, 8, 0 }
我现在这样做的方法是将信息提供给执行该操作的方法。
static void PerformAction(int[] arr, string action, int position, int value)
{
switch (action)
{
case "multiply":
array[position] *= value;
break;
case "add":
array[pos] += value;
break;
case "subtract":
array[pos] -= value;
break;
}
}
我的问题是 - 我如何应用多态和/或反射,所以我可以说:
ExecuteCommand(int[] arr, string action, int position, int value)
也许每个命令都有一个类,以便每个命令都知道如何执行。
答案 0 :(得分:0)
使用反射的简单计算器看起来像这样
using System.Reflection;
namespace StackOverFlow35166571
{
public class ReflectionCalculator
{
public int Calculate(string action, int a, int b)
{
var methodInfo = this.GetType().GetMethod(action, BindingFlags.Instance | BindingFlags.NonPublic);
var result = (int)methodInfo.Invoke(this, new object[] { a, b });
return result;
}
private int Multiply(int a, int b)
{
return a * b;
}
}
}
通话看起来像
var calc = new ReflectionCalculator();
var result = calc.Calculate("Multiply", 10, 3); // 30
使用您的输入的通话看起来像
var calc = new ReflectionCalculator();
array[position] = calc.Calculate(action, array[position], value);