Si supponga Ho una classe in questo modo:Come arrivare MethodInfo per tipo generico aperto da MethodInfo di tipo chiuso
public class MyClass<T>
{
public void Foo(T t)
{
}
}
Ora, assumere, ho un'istanza di MyClass<int>
e un MethodInfo
del suo metodo Foo
. La chiamata methodInfo.GetParameters()
restituirà un array ParameterInfo
con una voce, facendo riferimento al tipo int
. Il mio problema è che non riesco a scoprirlo, se quel parametro è stato dichiarato come int
nella classe o come T
.
Cosa sto cercando di ottenere?
In fase di esecuzione, desidero leggere la documentazione del metodo specificato da MethodInfo
dal file Doc XML generato da Visual Studio.
Per il metodo sopra definito, il tasto appare così:
<namespace>.MyClass`1.Foo(`0)
La `0
si riferisce al primo parametro di tipo generico della classe dichiarare. Per essere in grado di costruire questa stringa, ho bisogno di ottenere in qualche modo questa informazione.
Ma come?MethodInfo
non sembra contenere queste informazioni ...
Le tecniche di riflessione avanzate di solito richiedono il ritorno a IMetaDataImport2. Non così facile da usare da C#. –
@HansPassant: questa interfaccia supporterebbe il mio scenario? –
Quindi, se il tuo metodo fosse "public void Foo (int i, T t, string s)", vorresti ottenere qualcosa come " .MyClass'1.Foo (int,' 0, stringa) "? –
user276648