J'essaie de générer du code pour une série de classes génériques en utilisant T4.nom de classe avec paramètres génériques?
Je veux savoir comment obtenir le nom complet de la classe en utilisant la réflexion?
public class Foo<TFirst, TSecond> {}
var type = typeof(Foo<,>);
var name = type.FullName; // returns "Foo`2"
ce que je veux est le nom complet avec les noms de paramètres génériques réels que j'ai écrit
"Foo<TFirst, TSecond>"
Notez qu'ils ne sont pas un type connu, comme je l'ai dit que je suis génération de code en utilisant T4, donc Je veux avoir un nom exact pour l'utiliser pour les générations de code, par exemple, dans les méthodes génériques.
J'ai essayé this answers mais ils ont besoin de passer le type connu ce qui n'est pas ce que je veux.
Vous devez utiliser 'arg.Name' au lieu de' arg.FullName' il semble, parce que 'arg.FullName' dans votre exemple de code retourne' null' (alors que 'arg.Name' renvoie le nom correct). – Evk
@Evk: Merci d'avoir remarqué cela. J'avais d'abord essayé avec 'arg.Name', et j'ai pensé que je le changerais en' arg.FullName' quand je l'écrirais, pour donner l'exemple System.String/System.Int32. Va réparer maintenant! –
Oh merci, j'ai essayé 'string.Join (", ", type.GetGenericArguments(). Sélectionnez (t => t.FullName))' aussi, mais parce que j'utilisais FullName, il retournait null. –