キーを文字列または10進数にすることができる辞書があります。値は、さまざまなタイプのオブジェクトにすることができます。すべての場合に辞書項目の削除を管理できるコードを書きたいと思います。
置き換えたいコードは次のとおりです。
ConcurrentDictionary<string, Parus.Metadata.Units.Unit> objDict = cacheItem.Value as ConcurrentDictionary<string, Parus.Metadata.Units.Unit>;
foreach (var detaildGrid in this.MasterGridFrameControl.ChildFrames)
{
foreach (GridDataItem item in detaildGrid.GridControl.SelectedItems)
{
object dataKey = item.GetDataKeyValue("SubKey");
objDict.Remove((string)dataKey);
}
}
または次のように:
ConcurrentDictionary<decimal, Domain> objDict = cacheItem.Value as ConcurrentDictionary<decimal, Domain>;
foreach (GridFrameControl detaildGrid in this.MasterGridFrameControl.ChildFrames)
{
foreach (GridDataItem item in detaildGrid.GridControl.SelectedItems)
{
object dataKey = item.GetDataKeyValue("SubKey");
objDict.Remove((decimal)dataKey);
}
}
コードは次のようになります。
foreach (GridDataItem item in detaildGrid.GridControl.SelectedItems)
{
object dataKey = item.GetDataKeyValue("SubKey");
object[] parameters = { dataKey };
Type t = cacheItem.Value.GetType();
MethodInfo info = t.GetMethod("Remove");
info.Invoke(cacheItem.Value, parameters);
}
しかし、次のエラーメッセージが表示されます:あいまいな一致が見つかりました。
私はインターネットでいくつかの記事を読んだことがあり、この呼び出しで2番目のパラメーターを指定する必要があると言われています。
MethodInfo info = t.GetMethod("Remove");
しかし、私はそれを行う方法がわかりません。
どんな助けでもありがたいです。
前もって感謝します。