2

我正在尝试使用对象的OnFlushDirty方法Castle.ActiveRecord来实现对更改的通用审计:

protected override bool OnFlushDirty(object id, 
                                     IDictionary previousState, 
                                     IDictionary currentState, 
                                     NHibernate.Type.IType[] types
                                    )

Castle.ActiveRecord.Framework.DictionaryAdapter在执行时,为每个previousStatecurrentState参数传递 OnFlushDirty 。

不幸DictionaryAdapter的是不支持该GetEnumerator()方法,抛出一个NotSupportedException.

  1. 我应该期望 aDictionaryAdapter首先被传递到 OnFlushDirty 吗?和
  2. 假设我应该,我如何枚举 中的键/值对DictionaryAdapter,以便比较以前和当前的状态以进行审计?
4

1 回答 1

2

包括一个 Key 集合,可以使用DictionaryAdapterKey 进行正常枚举,然后将其应用于检索其 Value。

示例解决方案代码:

foreach (var entry in currentState.Keys)
{
    Console.WriteLine(currentState[entry]);
}
于 2011-07-07T15:44:28.443 回答