Как уже упоминалось выше, вы можете использовать MethodInfo , оно принадлежит пространству имен System.Reflection
. Для этого сначала получите тип объекта Type
, например:
var type = obj.GetType ()
После этого вы можете использовать var methods = type.GetMethods()
. Это даст вам MethodInfo []. Поиск элемента, используя ваш любимый метод для этого. Например, Linq:
var method = methods.Where(it => it.Name == __yourName__).LastOrDefault();
*, где yourName - это имя вашего метода.
Теперь у вас есть метод, который вы ищете. Получите параметры , используя
var parameters = method.getParameters();
И есть параметры как ParameterInfo[]
. Оттуда вы можете получить тип каждого параметра, используя свойство parameter.ParameterType.
Это очень осторожно с Reflection, оно очень, очень мощное, но может сильно снизить производительность при чрезмерном использовании.
Посмотрите на это System.Reflection
Пространство имен здесь .
Теперь вы можете добавить метод в коллекцию, например словарь:
var dictionary = new Dictionary<int,MethodInfo>();
dictionary.Add(1, method);
И получить его следующим образом:
var method = dictionary[1];
Для вызова функции вы можете использовать method.Invoke()
и передать параметры по мере необходимости.
РЕДАКТИРОВАТЬ: Если вы также хотите отправить параметры как функция по сети. Вы можете создать новый класс, который будет служить объектом передачи данных DTO. Этот класс может иметь в качестве свойства массив параметров (ParameterInfo []), MethodInfo и все, что вам нужно.
Затем вы можете сериализовать объект (возможно, json) и отправить его в другую систему, чтобы может затем десериализовать его и вызвать методInfo obj