Вы можете использовать отражение, но это довольно дорого.Вот вопрос, который описывает, как это сделать:
C # Reflection: Поиск атрибутов в поле члена
Учитывая, что имя списка известно во время компиляции, вы могли бырассмотрите возможность реализации метода, который принимает строковое имя списка и возвращает ссылку на соответствующий список, используя оператор 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.");
}
Это будет быстрее во время выполнения, чем использование отраженияно требует обслуживания (если у вас достаточно списков, чтобы оправдать усилия, вы можете создать этот метод с помощью кода).