68 votes

Obtenir le nom d'une classe comme une chaîne de caractères en C#

Est-il possible de prendre un nom de classe et à la convertir en une chaîne de caractères en C#?

Dans le cadre de l'Entity Framework, l' .Il y a la méthode prend en un point liste délimitée par des cordes à rejoindre lors de l'exécution d'une requête. J'ai le modèle de classe de ce que je veux rejoindre, et pour des raisons de refactoring et de l'avenir de la maintenance du code, je veux être en mesure d'avoir le temps de compilation de sécurité lors de la référence à cette classe.

Ainsi, est-il un moyen que je pourrais faire ceci:

class Foo
{
}

tblBar.Include ( Foo.GetType().ToString() );

Je ne pense pas que je peux faire GetType() sans une instance. Des idées?

109voto

Max Schmeling Points 6295

Vous ne pouvez pas utiliser .GetType() sans exemple, parce qu' GetType est une méthode.

Vous pouvez obtenir le nom du type de bien que, comme ceci:

typeof(Foo).Name

Et comme l'a souligné Chris, si vous avez besoin de l'assemblée le nom qualifié que vous pouvez utiliser

typeof(Foo).AssemblyQualifiedName

12voto

Craig Stuntz Points 95965

Inclure nécessite un nom de propriété, et non pas un nom de classe. Donc, c'est le nom de la propriété que vous voulez, pas le nom de son type. Vous pouvez obtenir qu'avec de la réflexion.

8voto

Glade Mellor Points 449

Vous pouvez aussi faire quelque chose comme ceci:

Type CLASS = typeof(MyClass);

Et puis vous pouvez accéder à la nom de, espace de noms, etc.

 string CLASS_NAME = CLASS.Name;
 string NAMESPACE = CLASS.Namespace;

2voto

Brian Points 82719
typeof(Foo).ToString()

?

0voto

Albino Points 11

Vous pouvez utiliser un DbSet<contact> au lieu de ObjectSet<contact>, de sorte que vous pouvez utiliser lambda comme un paramètre, par exemple, tblBar.Include(a => a.foo)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X