У меня есть класс под названием Operations.cs с некоторым методом. Я хочу создать список делегатов для произвольного выбора метода. Сейчас у меня есть следующий рабочий раствор:Использование Reflection для автоматического создания списка делегатов
public delegate void Delmethod(ExampleClass supervisor);
public static Operations op = new Operations();
public List<Delmethod> opList = new List<Delmethod>();
opList.Add(op.OpOne);
opList.Add(op.OpTwo);
opList.Add(op.OpThree);
opList.Add(op.OpFour);
opList.Add(op.OpFive);
opList.Add(op.OpSix);
opList.Add(op.OpSeven);
Но что я действительно хочу создать список opList автоматически в случае, если я добавить новый метод в Operations.cs. Я пытался использовать отражение в atempt, чтобы решить мою проблему следующим образом:
List<MethodInfo> listMethods = new List<MethodInfo>(op.GetType().GetMethods().ToList());
foreach (MethodInfo meth in listMethods)
{
opList.Add(meth);
}
Я считаю, что это не работает, потому что я делаю путаницу о значении делегата, но я из идеи.
Что вы собираетесь делать с этим списком? Если вы хотите вызвать эти методы в какой-то момент, вам нужно будет указать необходимые аргументы (это означает, что вам нужно знать количество и типы аргументов, которые будут поставляться ...). –
Позже я буду случайным образом выбирать операцию в opList для вызова. Фактическое решение - это что-то вроде: Random rnd = new Random(); int random = rnd.Next (opList.Count()); opList [random] .Invoke (супервизор); –