当前位置: 首页 > 知识库问答 >
问题:

嵌套接口:将idictionary转换为idictionary?

李文轩
2023-03-14

我认为将IDictionary > 对象强制转换为IDictionary > 相当简单,但是

var val = (IDictionary<TKey, IEnumerable<TValue>>)Value;
var val = Value as IDictionary<TKey, IEnumerable<TValue>>;

共有1个答案

齐俊贤
2023-03-14

我认为将IDictionary > 对象强制转换为IDictionary > 相当简单

绝对不行.它不会是类型安全的。这里有一个为什么不这样做的例子:

// This is fine...
IDictionary<string, IList<int>> dictionary = new Dictionary<string, IList<int>>();

// Suppose this were valid...
IDictionary<string, IEnumerable<int>> badDictionary = dictionary;

// LinkedList<T> doesn't implement IList<T>
badDictionary["foo"] = new LinkedList<int>();

// What should happen now?
IList<int> bang = dictionary["foo"];

正如您所看到的,这将导致问题-当我们期望所有值都实现ILIST 时,我们将试图获得LinkedList 。泛型的重点是类型安全-那么您希望哪一行会失败呢?在我看来,第一行、第三行和第四行显然是有效的--所以第二行是唯一一个无法编译的行,它确实...

编辑:只是为了澄清-很容易用现有键/值对的副本创建一个新字典,例如使用link:

var copy = original.ToDictionary<TKey, IEnumerable<TValue>>(pair => pair.Key,
                                                            pair => pair.Value);

你只需要知道你现在有两个独立的字典。

 类似资料:
  • 问题内容: 我是Python和Pandas的新手。我正在尝试将Pandas Dataframe转换为嵌套的JSON。函数.to_json()不能为我的目标提供足够的灵活性。 以下是数据框的一些数据点(在csv中,以逗号分隔): 有很多重复的信息,我想要一个这样的JSON: 我怎样才能做到这一点? 编辑: 再现数据帧的代码: 问题答案: 更新: 结果(格式化): 旧答案: 你可以用它做的,和方法:

  • 我遇到了一个问题,我的程序只在的一次迭代中结束,我不确定不合逻辑的代码在哪里。 全球给予: 我复杂的嵌套从这里开始,但我不确定如何修复它,以便它迭代通过和数字for-循环: 我得到以下输出: 我从来没有得到Susie的数据,我很早就回来了,但似乎不知道在哪里。对于问题所在(甚至重构)的任何帮助/指导都将不胜感激。提前谢谢!

  • 我有两个嵌套的case类: 当然,解决方案应该是泛型的,并且适用于任何case类。 注意:这个讨论很好地回答了如何将单个case类映射到映射。但我无法将其用于嵌套的case类。相反,我得到了:

  • 问题内容: 我在Postgres中有一个包含此数据的表,并且很难将其转换为JSON对象。 我该如何转换呢? 任何建议都会有所帮助。谢谢 问题答案: 使用(https://www.postgresql.org/docs/current/static/queries- with.html )和JSON函数(https://www.postgresql.org/docs/current/static/f

  • 问题内容: 我想在下面的代码中改进getCustomerFromDTO方法,我需要从interface {}创建一个结构,目前我需要将该接口编组为byte [],然后将数组解组为我的结构-必须有更好的方法。 我的用例是,我通过rabbitmq发送结构,然后使用具有其他特定于域的数据的通用DTO包装器来发送它们。当我从Rabbit MQ接收DTO时,消息下方的一层将被封送给我的DTO,然后我需要从该

  • # 11.2 接口嵌套接口 一个接口可以包含一个或多个其他的接口,这相当于直接将这些内嵌接口的方法列举在外层接口中一样。 比如接口 File 包含了 ReadWrite 和 Lock 的所有方法,它还额外有一个 Close() 方法。 type ReadWrite interface { Read(b Buffer) bool Write(b Buffer) bool } ty