2015-11-12 2 views
1

Допустим, у меня есть метод:Получить параметры расширенного метода в метод расширения

public int Method(string param1, string param2) 
{ 
    return 0; 
} 

И у меня есть метод расширения

public static int Extend(this int mhd, string param1, string param2) 
{ 
    return mhd; 
} 

И я бы назвал это как

int N = Method("param1","param2").Extend("param1","param2"); 

Но с этим я должен был определить параметры два раза. Интересно, есть ли способ, чтобы получить расширить методы paramters как это:

public static int Extend(this int mhd) 
{ 
    var params = this.Parameters; 
    return mhd; 
} 
+1

Прямой ответ нет, потому что метод расширения не знает о том, как был получен его параметр. Например, вы можете вызывать '5.Extend (« param1 »,« param2 »)'. Может быть, кто-то может помочь, если вы объясните свою цель на более высоком уровне. –

+0

'public int Method (string first param, string second param2)' - компилируется ли это? – radarbob

+0

:) Я не видел пробелов между ними. Я отредактирую свой вопрос. –

ответ

0

Но с этим я должен определить параметры в два раза. Интересно, есть ли способ получить методы расширения таких параметров:

№ 1 Первый параметр метода расширения всегда является типом, для которого предназначены методы. Этот параметр необходим в объявлении , поэтому, если вы хотите передать что-либо, вы должны объявить этот 2-й параметр.


Почему бы не поместить весь код в один метод?


Можете ли вы инвертировать зависимости метода? Другими словами что-то вроде этого:

int N = 0.Extend(Method("param1","param2"));  

Или что-то вроде этого:

public int Method (int mhd, string one, string two) { 
    // do stuff... 

    return mhd.Extend (one, two); 
}