bekommen Angenommen, ich habe eine Klasse wie folgt:Wie Method für offene generische Art von Method von geschlossenem Typ
public class MyClass<T>
{
public void Foo(T t)
{
}
}
Es sei nun angenommen, ich habe eine Instanz von MyClass<int>
und MethodInfo
seiner Foo
Methode. Aufruf methodInfo.GetParameters()
wird ein Array ParameterInfo
mit einem Eintrag zurückgeben, bezogen auf Typ int
. Mein Problem ist, dass ich nicht herausfinden kann, ob dieser Parameter als int
in der Klasse oder als T
deklariert wurde.
Was versuche ich zu erreichen?
Zur Laufzeit möchte ich die Dokumentation der von MethodInfo
angegebenen Methode aus der von Visual Studio generierten XML-Doc-Datei lesen.
Für das obige Verfahren definiert sind, sieht der Schlüssel wie folgt aus:
<namespace>.MyClass`1.Foo(`0)
Die `0
zur ersten generischen Typparameter der deklarierte Klasse bezieht. Um diese Saite konstruieren zu können, muss ich diese Information irgendwie bekommen.
Aber wie?MethodInfo
scheint nicht, dass Informationen zu enthalten ...
Fortgeschrittene Reflexionstechniken erfordern normalerweise einen Rückfall auf IMetaDataImport2. Nicht so einfach von C# zu verwenden. –
@HansPassant: Würde diese Schnittstelle mein Szenario unterstützen? –
Also, wenn Ihre Methode "öffentliche void Foo (int i, T t, String s)" wäre, möchten Sie etwas wie " .MyClass'1.Foo (int,' 0, String) "? –
user276648