Исправить ошибку IndexOutOfRange в приведенном коде - C#
Формулировка задачи:
MethodInfo[] mii = t.GetMethods();
foreach (MethodInfo m1 in mii)
{
ParameterInfo[] pi = m1.GetParameters();
if (m1.Name == "sum")
{
int val;
val = (int)m1.Invoke(ReflectOb, null);
Console.WriteLine(val);
}
else if ((m1.Name.CompareTo("set") == 0) && (pi[0].ParameterType==typeof(int)))
{
object[] ob = new object[2];
ob[0] = 12;
ob[1] = 18;
m1.Invoke(ReflectOb, ob);
}
else if ((m1.Name.CompareTo("set") == 0) & (pi[0].ParameterType==typeof(double))) ////////////////////////////////<---Здесь вылетает ошибка из-за оператора &, почему?
{
Console.WriteLine("Параметр1 " + pi[0].ParameterType.Name+" Параметр 2 "+pi[0].ParameterType.Name);
object[] ob = new object[2];
ob[0] = 1.12;
ob[1] = 23.4;
m1.Invoke(ReflectOb, ob);
}
else if (m1.Name == "isBetween")
{
object[] ob = new object[1];
ob[0] = 19;
if ((bool)m1.Invoke(ReflectOb, ob)) Console.WriteLine(ob + "находится по середине");
else Console.WriteLine(ob + "Находится за пределами ");
}
else if (m1.Name.CompareTo("show") == 0){
m1.Invoke(ReflectOb, null);
}
}
Console.ReadKey();
}
}Решение задачи: «Исправить ошибку IndexOutOfRange в приведенном коде»
textual
Листинг программы
MethodInfo[] mii = t.GetMethods();
foreach (MethodInfo m1 in mii)
{
switch(m1.Name)
{
case "sum":
int val;
val = (int)m1.Invoke(ReflectOb, null);
Console.WriteLine(val);
break;
case "isBetween":
object[] ob = new object[1];
ob[0] = 19;
if ((bool)m1.Invoke(ReflectOb, ob)) Console.WriteLine(ob + "находится по середине");
else Console.WriteLine(ob + "Находится за пределами ");
break;
case "show":
m1.Invoke(ReflectOb, null);
break;
case "set":
ParameterInfo[] pi = m1.GetParameters();
if (pi[0].ParameterType == typeof(int))
{
object[] ob = new object[2];
ob[0] = 12;
ob[1] = 18;
m1.Invoke(ReflectOb, ob);
continue;
}
if (pi[0].ParameterType == typeof(double))
{
Console.WriteLine("Параметр1 " + pi[0].ParameterType.Name + " Параметр 2 " + pi[0].ParameterType.Name);
object[] ob = new object[2];
ob[0] = 1.12;
ob[1] = 23.4;
m1.Invoke(ReflectOb, ob);
}
break;
default: break;
}
}