Ответ 1
Вы комбинируете две вещи, которые вы уже знаете, как это сделать.
У меня есть проект с использованием С#.NET 2.0 (нельзя использовать более высокую версию). Я хотел бы получить имя параметров метода в методе, который называется первым. Если я вызываю метод из MyMethodsClass, я хочу получить строку, указывающую, какой параметр недействителен, следуя некоторым условиям, указанным в методе isValid из класса MyCheckClass.
В следующем коде я получаю строку, которая возвращает "Пожалуйста, проверьте параметр 5", если я буду называть myMehtod (5,1,1). Но я хотел бы получить: "Пожалуйста, проверьте параметр".
Как я мог это сделать? Спасибо!
public MyMethodsClass {
public string myMethod (int a, int b, int c) {
return MyCheckClass.isValid(a,b,c);
}
public string myMethod2 (int d, int e) {
return MyCheckClass.isValid(d,e);
}
}
//Other file
public class MyCheckClass {
public static string isValid (params object[] parameters) {
StringBuilder result= new StringBuilder();
for (int i = 0; i < parameters.Length; i++)
{
object p = parameters[i];
//Some checks...
if (p == null || p.Equals("") || p != 5)
{
result.Append("Please check the " + p + " parameter");
}
}
return result.toString();
}
}
Вы комбинируете две вещи, которые вы уже знаете, как это сделать.
Эти две линии должны выполнить эту работу для вас, возможно, придется адаптироваться, но должны работать ^^
MethodInfo info = typeof (MyMethodsClass).GetMethod("MethodName");
string name = info.GetParameters()[indexOfTheFaultyOne].Name;