Есть ли способ сделать это в управляемом коде или, по крайней мере, без серьезных проблем с производительностью? В общем, что я хотел бы получить, конечно, что-то вдоль линийПолучение значений параметров для метода вызова
public void Method (int Index, string Name, IPAddress IP, object Arg) {
object[] parameterValues = HereGoesMagic.GetParameterValues (
new StackFrame (0, false).GetMethod()
);
}
, но, увы, я подозреваю, что это крайне желаемое за действительное с моей стороны.
UPDATE
Рискуя впасть в XY Problem, возможно, я действительно должен обратиться за советом, а не пытаться себя в велосипедный строительной индустрии снова.
Проблема в том, что я должен написать кучу методов с переменным номером параметра, все из которых будут вызывать один метод с одним агрегированным параметром. Что-то вроде
void MAggregate (object[] parameters) {
<...>
}
void M1 (int i, string s, DateTime d) {
object[] parameters p = ???
MAggregate (p);
}
void M2 (string[] tags, float f) {
object[] parameters p = ???
MAggregate (p);
}
Передача объекта в те, которые будут мало решены, поскольку количество методов и дисперсия параметров довольно высоки. Использование copy-paste ... ну, это copy-paste.
UPDATE
Все вышеперечисленное предназначен для выполнения сравнительно простую задачу: запрашивать различные REST API конечных точек с большим количеством различных параметров, передаваемых в строку запроса.
Необходимая база конечных точек Uri и имена параметров запроса определены в другом месте и уже известны к моменту, когда вызываются M1, M2, ..., MAggregate.
Возможно, вы можете предоставить прецедент, и мы можем помочь вам решить вашу проблему таким образом. – Erik
Звук, похожий на http://meta.stackexchange.com/questions/66377/what-is-the-xy-problem? – BendEg
Не пытайтесь сориентировать ответы в определенном направлении, которое вы выбрали для решения своей проблемы (получить все значения параметров для метода вызова без проблем с производительностью), а скорее рассказать нам больше об исходной проблеме, которую вы пытаетесь решить. Потому что, возможно, могут быть альтернативные подходы к решению вашего конкретного сценария. Если вы не знаете, какую проблему вы пытаетесь решить, то, по крайней мере, вы можете предоставить нам немного больше контекста. –