2015-12-17 4 views
0

Есть ли способ сделать это в управляемом коде или, по крайней мере, без серьезных проблем с производительностью? В общем, что я хотел бы получить, конечно, что-то вдоль линийПолучение значений параметров для метода вызова

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.

+2

Возможно, вы можете предоставить прецедент, и мы можем помочь вам решить вашу проблему таким образом. – Erik

+1

Звук, похожий на http://meta.stackexchange.com/questions/66377/what-is-the-xy-problem? – BendEg

+2

Не пытайтесь сориентировать ответы в определенном направлении, которое вы выбрали для решения своей проблемы (получить все значения параметров для метода вызова без проблем с производительностью), а скорее рассказать нам больше об исходной проблеме, которую вы пытаетесь решить. Потому что, возможно, могут быть альтернативные подходы к решению вашего конкретного сценария. Если вы не знаете, какую проблему вы пытаетесь решить, то, по крайней мере, вы можете предоставить нам немного больше контекста. –

ответ

1

То, что вы хотите, невозможно из коробки. Вы можете передать объект, содержащий все свойства, в качестве параметра, а не получать каждую вещь через отражение.