Comment obtenir le type de classe par son nom de classe?
namespace Myspace
{
public class MyClass
{
}
} //This class is in another file.
using Myspace;
static void Main(string[] args)
{
Regex regexViewModelKey = new Regex(RegularExpr.ViewModelKeyPattern);
string viewModel = regexViewModelKey.Match(match.Value).Value;
//Now, vieModel is a string, and its value is "MyClass". So, I only know the class name, this is why I ask this question.
//Now, I'm only allowed to use the string form of this class name to get its type.
//I have tyied like this, but its no use.
Type t = Type.GetType(viewModel);
//it's return a null.
//Then I tyied another method like this, but there is an exception when calling Assembly.Load
Assembly assembly = Assembly.Load("Myspace");
Type ty = assembly.GetType("Myspace" + viewModel);
}
J'espère que ma question est claire. Quelqu'un peut-il m'aider.THX
Je suis seulement autorisé à utiliser le formulaire de chaîne de ce nom de classe pour obtenir son type.
thx tout le monde.
J'ai résolu cette question par moi-même comme ça.
{
Type t = Type.GetType(string.Concat(viewModel, ",", "Myspace"));
}
peut-être que ça va aider stackoverflow.com/questions/17045635/...
Essayer de cette façon, modèle de chaîne = "Myspace.MyClass";Utiliser l'assembly nom qualifié à la place
stackoverflow.com/questions/648160/...
Essayer de cette façon, modèle de chaîne = "Myspace.MyClass";Utiliser l'assembly nom qualifié à la place
stackoverflow.com/questions/648160/...
OriginalL'auteur Huan Fu | 2013-08-19
Vous devez vous connecter pour publier un commentaire.
suffit d'utiliser la fonction typeof(). Le paramètre est juste que le nom de la classe.
MSDN sur typeof()
OriginalL'auteur Shen liang
En règle générale, vous aurez rarement besoin de faire de ce type de comparaisons, sauf si vous êtes en train de faire quelque chose avec de la réflexion ou des interfaces. Néanmoins:
Si vous connaissez le type que vous souhaitez comparer, utiliser le ou les opérateurs:
L'opérateur effectue un cast qui retourne la valeur null en cas d'échec plutôt qu'une exception:
Si vous ne connaissez pas le type et veulent juste runtime type d'informations, utilisez le .GetType() méthode:
OriginalL'auteur Backtrack
Votre Type de ligne.GetType(modèle) ne fonctionne pas si vous utilisez le nom de classe entièrement qualifié, y compris de son espace de nommage.
En outre, s'il est dans une autre assemblée à partir du code qui fait l'appel, vous devez utiliser de l'Assemblée.GetType(typeName) lors de l'assemblée de l'objet en question est une instance de l'assembly contenant le type.
OriginalL'auteur tker