Type.GetType("namespace.a.b.ClassName")
renvoie null
et j'ai dans les utilisations: using namespace.a.b;
UPDATE: le type existe, il se trouve dans une bibliothèque de classes différente, et je dois l'obtenir par nom de chaîne
Type.GetType("namespace.a.b.ClassName")
renvoie null
et j'ai dans les utilisations: using namespace.a.b;
UPDATE: le type existe, il se trouve dans une bibliothèque de classes différente, et je dois l'obtenir par nom de chaîne
Type.GetType("namespace.qualified.TypeName")
ne fonctionne que lorsque le type est trouvé dans mscorlib.dll ou dans l'assembly en cours d'exécution.
Si aucune de ces choses n'est vraie, vous aurez besoin d'un nom qualifié d'assemblage .
Vous pouvez également obtenir le type sans nom qualifié d'assembly mais avec le nom dll également, par exemple:
Type myClassType = Type.GetType("TypeName,DllName");
J'ai eu la même situation et cela a fonctionné pour moi. J'avais besoin d'un objet de type "DataModel.QueueObject" et j'avais une référence à "DataModel", j'ai donc obtenu le type comme suit:
Type type = Type.GetType("DataModel.QueueObject,DataModel");
La deuxième chaîne après la virgule est le nom de référence (nom dll).
Dictionary<string, Type> typeCache;
...
public static bool TryFindType(string typeName, out Type t) {
lock (typeCache) {
if (!typeCache.TryGetValue(typeName, out t)) {
foreach (Assembly a in AppDomain.CurrentDomain.GetAssemblies()) {
t = a.GetType(typeName);
if (t != null)
break;
}
typeCache[typeName] = t; // perhaps null
}
}
return t != null;
}
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.