Conversion de chaîne C# en type : éviter les retours nuls
La conversion de chaînes représentant des noms de classe en types réels en C# peut parfois donner des résultats nuls. Cela se produit généralement lors de l'utilisation de Type.GetType("System.Int32")
, qui ne fonctionne correctement que pour les types de mscorlib
ou de l'assembly actuel.
Pour réussir la conversion de vos types personnalisés, vous devez spécifier à la fois l'espace de noms et l'assembly :
<code class="language-csharp">Type type = Type.GetType("Namespace.MyClass, MyAssembly");</code>
Pour les assemblys portant un nom fort, assurez-vous d'inclure toutes les informations d'assembly pertinentes comme détaillé dans la Type.GetType(string)
documentation.
Alternativement, si vous avez une référence à l'assembly, utilisez Assembly.GetType()
:
<code class="language-csharp">Assembly asm = typeof(SomeKnownType).Assembly; Type type = asm.GetType(namespaceQualifiedTypeName);</code>
Ces méthodes fournissent une conversion chaîne-type fiable dans diverses situations.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!