Перечислять через DictionaryAdapter, переданный OnFlushDirty - PullRequest
2 голосов
/ 07 июля 2011

Я пытаюсь использовать метод OnFlushDirty объекта Castle.ActiveRecord для реализации общего аудита изменений:

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

При выполнении OnFlushDirty передается Castle.ActiveRecord.Framework.DictionaryAdapter для каждого из параметров previousState и currentState.

К сожалению DictionaryAdapter не поддерживает метод GetEnumerator(), выбрасывая NotSupportedException.

  1. Стоит ли ожидать, что DictionaryAdapter будет передан в OnFlushDirty в первую очередь ?; и
  2. Предполагая, что я должен, как я могу перечислить через пары ключ / значение в DictionaryAdapter, чтобы сравнить предыдущие и текущие состояния для аудита?

1 Ответ

2 голосов
/ 07 июля 2011

DictionaryAdapter включает в себя коллекцию ключей, которая может обычно перечисляться с ключом, который затем применяется для получения его значения.

Пример кода решения:

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