Это то, что у меня есть в проекте, включая довольно сложные случаи отражения:
static int PopulateValues<T>(List<string> propertyNames, ref T list) { /*...*/ }
// Example call:
PopulateValues(propertyNames, ref list1);
Я бы очень хотел добавить params
и сделать params ref T[] lists
, чтобы разрешить использование:
PopulateValues(propertyNames, ref list1, ref list2, ...);
Однако, это дает мне следующую ошибку:
Параметр не может иметь модификаторы 'params' и 'ref'.
Моей первоначальной мыслью было позволить list
быть object[]
, но использование было бы уродливым (приведение object
). Поэтому сейчас я вызываю метод один раз для каждого типа, выполняя ненужные множественные перечисления.
решено: мне не нужно ref
для вызова методов отражения в классе параметров (SetValue
, GetValue
, InvokeMember
и т. Д.), Что означает, что я могу пропустить ref
в целом. Действительно, я должен был это попробовать.