【发布时间】:2012-02-13 06:35:24
【问题描述】:
我正在对用于审计日志的数据结构进行“深度比较”(谁更改了哪些成员,何时更改)。我为此使用反射,递归到结构中并比较它们。虽然我遇到了包含字典的问题。
我可以通过typeof(IDictionary).IsAssignableFrom(memberType) 检测到一个成员是字典。然后我的计划是收集两个对象中都存在的键,并继续对它们进行递归。但是,IDictionary.Keys 是一个ICollection,它没有被 LINQ 扩展。不知道键的类型,我怎么能做到这一点?
也许这种方法不是最理想的(我在泛型/反射组合方面没有那么丰富的经验),我应该用其他方法吗?
【问题讨论】:
-
您的问题与 LINQ 有什么关系?
-
@DavidM:只有模板版本,不是
IEnumerable。在我的问题中说memberType将是Dictionary<string, int>。这可以分配给IDictionary,但据我所知,不可能做到IDictionary<memberType.GetGenericParameters()[0], memberType.GetGenericParameters()[1]>,所以我坚持使用非通用IDictionary。
标签: c# reflection audit audit-logging