2011-07-07 154 views
2

我试图使用Castle.ActiveRecord对象的OnFlushDirty方法,以实现变化的通用审计:枚举通过DictionaryAdapter传递给OnFlushDirty

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

在执行时,OnFlushDirty传递每个的一个Castle.ActiveRecord.Framework.DictionaryAdapterpreviousStatecurrentState参数。

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

  1. 我是否应该首先将DictionaryAdapter传递给OnFlushDirty?和
  2. 假设我应该如何通过DictionaryAdapter中的键/值对来枚举,以比较以前和当前的审计状态?

回答

2

DictionaryAdapter包含一个Key集合,它可以通过Key来枚举,然后应用它来检索它的Value。

样品溶液代码:

foreach (var entry in currentState.Keys) 
{ 
    Console.WriteLine(currentState[entry]); 
}