0

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

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

是否可以通读列表,我将如何去做?

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");




            }
4

1 回答 1

1

如果您只想遍历参数,当它是(通用)列表时,您可以检查参数是否实现接口 IEnumerable,然后使用 foreach 语句循环列表中的值。

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

if (argumentList != null) {
  foreach(var item in argumentList){
    // Do what you want with the item
  }
}
于 2012-06-15T10:54:19.387 回答