【发布时间】:2011-03-28 21:58:43
【问题描述】:
我有两个列表(列表)l1 和 l2。 我是从我想使用的列表名称之外获取的(比如说 l1)。
我怎样才能找到请求的列表?
我需要使用 getMember 方法吗?
谢谢
【问题讨论】:
-
很难理解你在问什么。一个代码 sn-p 会有所帮助。
-
听起来你让这变得比它需要的更复杂。你能更一般地告诉我们你想要做什么吗?
标签: c# reflection
我有两个列表(列表)l1 和 l2。 我是从我想使用的列表名称之外获取的(比如说 l1)。
我怎样才能找到请求的列表?
我需要使用 getMember 方法吗?
谢谢
【问题讨论】:
标签: c# reflection
您可以使用反射,但它相当昂贵。这是一个概述如何做到这一点的问题:
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 语句。