首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何发现C#索引器中使用的键?

如何发现C#索引器中使用的键?
EN

Stack Overflow用户
提问于 2011-09-20 04:58:57
回答 1查看 65关注 0票数 0

我们有一个遗留类,它使用索引器来允许人们添加任意的键值对:

代码语言:javascript
运行
复制
legacyInstance["myKey"] = value;

遗憾的是,我们不能查看或修改这个类的代码。我们只能通过它的各种属性来访问它。

我们需要做的是以一种智能的方式克隆这个对象。当然,普通属性很容易克隆:

代码语言:javascript
运行
复制
myClone.blargle = legacyInstance.blargle;

但是,我们如何发现某人可能添加到特定对象实例中的所有键,以便正确克隆它们?理想情况是这样的:

代码语言:javascript
运行
复制
string[] keys = legacyInstance.<#magic!#>;
foreach (string key in keys)
{
    myClone[key] = legacyInstance[key];
}

虽然我怀疑魔法可能涉及到一些反思,但事实证明,由于我是一个反思的暴徒,所以很难做到这一点。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-09-20 05:01:50

获取ILSpy并进入源代码。如果您的集合不公开成员以迭代键(就像Dictionary公开Keys一样),那么这是您惟一的选择。顺便问一下,也许你的收藏是IEnumerable?实际上,对于一个集合来说,不为提供任何迭代工具是很奇怪的。它不是叫YouCanOnlyUseIndexCollection吗?

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7477225

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档