c#:按名称获取类成员(反射)

c#:按名称获取类成员(反射),c#,reflection,C#,Reflection,我有两个列表(列表)l1和l2。 我从我想要使用的列表的名称之外得到(比如l1) 我怎样才能找到请求的列表 我需要使用getMember方法吗 谢谢您可以使用反射,但它相当昂贵。这里有一个问题概述了如何做到这一点: P>在编译时已知列表名称,您可以考虑实现一种方法,该方法接受列表的字符串名称,并使用开关< /C> >语句或如果语句> < /P>,返回对相应列表的引用。 static IList FindList(string name) { if (name == "l1") { ret

我有两个列表(列表)l1和l2。 我从我想要使用的列表的名称之外得到(比如l1)

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

我需要使用getMember方法吗


谢谢

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

<> P>在编译时已知列表名称,您可以考虑实现一种方法,该方法接受列表的字符串名称,并使用<代码>开关< /C> >语句或<代码>如果语句> < /P>,返回对相应列表的引用。
static IList FindList(string name)
{
  if (name == "l1") { return l1; }
  else if (name == "l2") { return l2; }
  else throw Exception("List " + name + " not found.");
}

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

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

<> P>在编译时已知列表名称,您可以考虑实现一种方法,该方法接受列表的字符串名称,并使用<代码>开关< /C> >语句或<代码>如果语句> < /P>,返回对相应列表的引用。
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,只需将其添加到字典中,而不必扩展switch语句。或者他可以使用字典,将两个列表(或更多列表)都放入将名称作为键输入此词典,然后很容易将其取出。@KeithS你在几秒钟内击败了我:-)你也可以将其设置为一个词典,键入
name
的可能值。只是说说而已;如果您需要l3,只需简单地将其添加到字典中,而不必扩展switch语句。或者他可以使用字典,将两个列表(或更多列表)以名称为键放入字典中,然后很容易将它们取出。@KeithS您打败了我几秒钟:-)