【问题标题】:c#: get class member by name (reflection)c#:按名称获取类成员(反射)
【发布时间】:2011-03-28 21:58:43
【问题描述】:

我有两个列表(列表)l1 和 l2。 我是从我想使用的列表名称之外获取的(比如说 l1)。

我怎样才能找到请求的列表?

我需要使用 getMember 方法吗?

谢谢

【问题讨论】:

  • 很难理解你在问什么。一个代码 sn-p 会有所帮助。
  • 听起来你让这变得比它需要的更复杂。你能更一般地告诉我们你想要做什么吗?

标签: c# reflection


【解决方案1】:

您可以使用反射,但它相当昂贵。这是一个概述如何做到这一点的问题:

C# Reflection : Finding Attributes on a Member Field

鉴于列表名称在编译时已知,您可以考虑实现一个方法,该方法接受列表的字符串名称并使用switch 语句或if 语句返回对适当列表的引用。

static IList FindList(string name)
{
  if (name == "l1") { return l1; }
  else if (name == "l2") { return l2; }
  else throw Exception("List " + name + " not found.");
}

这在运行时会比使用反射更快,但需要维护(如果您有足够的列表来保证这项工作,您可以编写代码生成该方法)。

【讨论】:

  • 您也可以将其设置为字典,键入name 的可能值。只是说;如果您需要一个 l3,只需将其添加到 Dictionary 中即可,而不必扩展 switch 语句。
  • 或者他可以使用Dictionary>,将两个列表(或更多)以名称作为键放入这个字典中,然后很容易将它们取出。
  • @KeithS 你打败了我几秒钟 :-)
猜你喜欢
  • 2013-04-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-10-04
  • 1970-01-01
相关资源
最近更新 更多