gpt4 book ai didi

C# 将 Dictionary 转换为 Dictionary (涉及反射)

转载 作者:太空狗 更新时间:2023-10-29 17:30:39 24 4
gpt4 key购买 nike

是否可以转换 Dictionary<string, Anything>一致的中间通用类型?所以我可以投 <string, string> , <string, bool> , <string, int> , <string, anything>都是同一类型的字典吗?

我正在从事一个使用大量反射的项目,我需要能够像这样处理字典类型:

FieldInfo field = this.GetType().GetField(fieldName);
Dictionary<string, Object> dict = (Dictionary<string, Object>)field.GetValue(this);

上面的代码是我目前拥有的,程序总是在从 field.GetValue 转换为通用 Dictionary<string, Object> 时失败.

有没有办法做到这一点?还是我应该想出一种不同的方式来处理这些词典?

如有任何帮助,我们将不胜感激。

最佳答案

正在关注 AakashM's answer , Actor 似乎不打球。不过,您可以使用一些辅助方法来绕过它:

IDictionary dictionary = (IDictionary)field.GetValue(this);
Dictionary<string, object> newDictionary = CastDict(dictionary)
.ToDictionary(entry => (string)entry.Key,
entry => entry.Value);

private IEnumerable<DictionaryEntry> CastDict(IDictionary dictionary)
{
foreach (DictionaryEntry entry in dictionary)
{
yield return entry;
}
}

在这种情况下,在 foreach 中输入 duck 非常方便。

关于C# 将 Dictionary<string, AnyType> 转换为 Dictionary<string, Object> (涉及反射),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10206557/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com