我可以通读一个泛型列表的参数吗?
本文关键字:列表 泛型 参数 一个 我可以 | 更新日期: 2023-09-27 18:37:12
我正在使用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");
}
如果您只想遍历参数,当它是(泛型)列表时,您可以检查参数是否实现了接口 IEnumerable,然后循环值在带有 foreach 语句的列表中。
IEnumerable argumentList = args.Arguments[i] as IEnumerable;
if (argumentList != null) {
foreach(var item in argumentList){
// Do what you want with the item
}
}