2011-07-07 151 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]); 
}