【发布时间】:2018-09-24 17:02:26
【问题描述】:
在构建超过单一维度的查找表时,我发现自己经常嵌套字典:
public class MyLookupTable
{
IDictionary<T1, IDictionary<T2, ISet<T3>>> mapOfMapOfSequences;
// Update the table
public void AddItem(T3 myItem);
// Access the table
public IEnumerable<T3> GetItems(T1 key1, T2 key2);
}
到目前为止,这对我来说效果很好,尽管需要编写一些冗长的 ContainsKey 条件来访问/修改表。
最近在写一个有5个key的缓存机制,字典字段定义有点可笑。
在架构上,是否有一种我完全忽略的设计模式可以让这个问题更易于管理?
【问题讨论】:
-
谢谢!这绝对为我指明了正确的方向。
-
看起来你做得很好。您有一个自定义类型来包装要正确使用的字典(我假设看到您提供的 sn-p),并且字典的查找和存储速度非常快。就个人而言,除非我看到所有代码,否则我不会提出更好的方法,即使那样我也确信你做得很好。
-
对于您的情况,复合键可能有意义。但是,这取决于用例。例如,如果您需要知道给定主键存在多少个辅助键值,那么嵌套形式将使该操作更有效。
标签: c# design-patterns lookup-tables