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

Iga*_*gal 0 c# reflection

我有两个列表(列表)l1和l2.我从外面得到了我想要使用的列表名称(比方说l1).

我怎样才能找到要求的清单?

我需要使用getMember方法吗?

谢谢

Eri*_* J. 6

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

C#反射:在成员字段上查找属性

鉴于列表名称在编译时是已知的,您可以考虑实现一个接受列表的字符串名称的方法,并使用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.");
}
Run Code Online (Sandbox Code Playgroud)

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