2

我有一个使用 C# .NET 2.0 的项目(不能使用更高版本)。我想在第一个调用的方法中获取方法的参数名称。如果我从 MyMethodsClass 调用一个方法,我想接收一个字符串,指示哪个参数无效,遵循 MyCheckClass 类的 isValid 方法中指示的一些条件。

使用以下代码,我得到一个返回“请检查 5 参数”的字符串,以防我调用 myMehtod(5,1,1)。但我想获得,“请检查 a 参数”。

我怎么能那样做?谢谢!

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();               
    }
}
4

2 回答 2

3

你把你已经知道怎么做的两件事结合起来。

  1. 如何找到调用当前方法的方法?
  2. 如何在 C# 中获取方法参数的名称?
于 2013-03-04T15:55:39.743 回答
1

这两行应该可以为您完成工作,也许需要适应但应该可以工作^^

        MethodInfo info = typeof (MyMethodsClass).GetMethod("MethodName");
        string name = info.GetParameters()[indexOfTheFaultyOne].Name;
于 2013-03-04T15:53:59.863 回答