我正在使用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");
}
答案 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
}
}