我可以通读一个通用列表的参数吗?

时间:2012-06-15 10:16:48

标签: c# generic-list postsharp

我正在使用postharp来记录方法调用,我还需要记录参数值。 当我的参数是通用列表并且我无法遍历列表以获取其中的值时,我的问题就出现了。

我知道如何检查参数是否是列表,但我只是无法读取其中的值...

是否可以通读列表,我将如何做到这一点?

for (int i = 0; i < args.Arguments.Count; i++)
            {
                if (methodName == "LogonUser" && i == 1)
                {
                    sb.Append(",********");
                    break;
                }
                else if (i > 0)
                {
                    sb.Append(", ");
                }

                if (args.Arguments[i] is IList && args.Arguments[i].GetType().IsGenericType)
                {

                   //here is where i need to read through the list


                }
                sb.Append(args.Arguments.GetArgument(i) ?? "null");




            }

1 个答案:

答案 0 :(得分:1)

如果你只想遍历参数,那么当你的a(通用)列表可以时 检查参数是否实现了IEnumerable接口,然后循环这些值 在带有foreach声明的列表中。

IEnumerable argumentList = args.Arguments[i] as IEnumerable;

if (argumentList != null) {
  foreach(var item in argumentList){
    // Do what you want with the item
  }
}