如何查找功能参数

时间:2009-11-20 20:11:45

标签: reflection c#-2.0 function-parameter

我需要在十几个函数中记录所有函数参数。

有没有办法以编程方式确定所有参数及其值(或至少是它们的.ToString()值)?也许是通过反思?

2 个答案:

答案 0 :(得分:1)

答案 1 :(得分:1)

据我所知,没有办法使用反射来动态列出和确定局部变量的值。您可以使用反射来获取有关方法参数的类型信息,但只能使用声明的类型 - 您无法自动获取有关实际参数的信息,因为反射元数据提供了有关方法定义的信息,而不是在运行时传递给它的特定值。

但是,您可以这样做:

static class Extensions
{
    public static string GetTypeAndValue(this object obj) 
    { 
        return String.Format("{0}: {1}", obj.GetType().Name, obj.ToString()); 
    }
}

然后,从您要执行日志记录的每个方法中,执行类似

的操作
private void SomeMethodToBeLogged(string some_string, int some_int, bool some_bool)
{
    Logger.Log(String.Format("SomeMethodToBeLogged({0}, {1}, {2})", 
        some_string.GetTypeAndValue(), 
        some_int.GetTypeAndValue(), 
        some_bool.GetTypeAndValue()));
}