2013-03-04 80 views
2

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

使用下面的代码,我得到一个字符串,返回“请检查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();    
    } 
} 
+1

为了得到这个明确的,如果myMethod2被称为像这样myMethod2(someValue中,someOtherValue);你想要有'someValue'和'someOtherValue'这个名字。或者你想要'd'和'e'这个方法的签名吗? – RvdK 2013-03-04 16:10:36

+0

我想要签名的名字,是的。例如:“请检查一个参数”,“请检查d参数” – pablof 2013-03-04 16:22:54

回答

0

这两行应为你做这项工作,也许需要适应,但应该工作^^

 MethodInfo info = typeof (MyMethodsClass).GetMethod("MethodName"); 
     string name = info.GetParameters()[indexOfTheFaultyOne].Name; 
+0

@Antonijn在示例中,'a'是'myMethod'声明中形式参数的名称。在示例中,该方法被称为'myMethod(5,1,1)',他想提取对应于参数'5'的'a'。 – 2013-03-04 16:44:08

3
+1

@Antonijn这是OP想要的。请参阅我对该问题的评论以及他对此的反应 – RvdK 2013-03-04 16:24:17

+0

是的,我认为这是我想要的。我要去测试它。谢谢:) – pablof 2013-03-04 16:33:43

+0

恐怕这还不够。我无法在params数组中确定哪些参数映射到来自原始函数的哪些参数(例如,我可以接收isValid(3,3,5),但在isValid方法内,我不知道这个5从哪里来。获取原始参数名称,但不是相应的名称 – pablof 2013-03-05 09:29:12

相关问题