通过传递给 OnFlushDirty 的 DictionaryAdapter 进行枚举

发布于 2024-11-18 20:02:47 字数 827 浏览 1 评论 0原文

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

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

执行时,OnFlushDirty 会传递一个 Castle.ActiveRecord .Framework.DictionaryAdapter 用于每个 previousStatecurrentState 参数。

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

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

I am attempting to use the OnFlushDirty method of a Castle.ActiveRecord object in order to implement generic auditing of changes:

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

On execution, OnFlushDirty is passed a Castle.ActiveRecord.Framework.DictionaryAdapter for each of the previousState and currentState parameters.

Unfortunately DictionaryAdapter does not support the GetEnumerator() method, throwing a NotSupportedException.

  1. Should I be expecting a DictionaryAdapter to be passed into OnFlushDirty in the first place?; and
  2. Assuming I should, how can I enumerate through the Key/Value pairs within the DictionaryAdapter in order to compare previous and current states for auditing?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

白馒头 2024-11-25 20:02:47

DictionaryAdapter 包含一个 Key 集合,可以正常枚举该 Key,然后应用该 Key 来检索其 Value。

示例解决方案代码:

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

The DictionaryAdapter includes a Key collection which can be enumerated normally with the Key then being applied to retrieve its Value.

Sample solution code:

foreach (var entry in currentState.Keys)
{
    Console.WriteLine(currentState[entry]);
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文