En C#, une chaîne contenant un nom de type peut être convertie en l'objet Type correspondant. Cependant, la méthode utilisée pour cette conversion dépend si le type est défini dans le même assembly que le code appelant ou dans un assembly différent.
Type.GetType(string)
Si le type est défini dans le même assembly, vous pouvez utiliser la méthode Type.GetType(string)
et fournir le nom du type complet sous forme de chaîne. Par exemple, pour obtenir le int
du type de données Type
, vous utiliserez :
<code class="language-csharp">Type.GetType("System.Int32");</code>
Assembly.GetType(string)
Si le type est défini dans un autre assembly, vous devez également fournir le nom de l'assembly. Ceci peut être réalisé en utilisant la méthode Assembly.GetType(string)
. Tout d’abord, obtenez une référence à l’assembly, puis utilisez cette référence pour obtenir le Type
:
<code class="language-csharp">Assembly asm = typeof(SomeKnownType).Assembly; Type type = asm.GetType("Namespace.MyClass");</code>
Assurez-vous d'inclure l'espace de noms du type dans la chaîne fournie à Type.GetType()
ou Assembly.GetType()
. De plus, pour les assemblys avec un nom fort, il peut être nécessaire d’inclure l’identité complète de l’assembly, y compris la version, la culture et les balises de clé publique.
Considérons le scénario suivant, où il existe une chaîne contenant le nom complet d'un type :
<code class="language-csharp">string typeName = "Namespace.MyClass, MyAssembly";</code>
Selon que MyAssembly
est référencé par l'assembly appelant, Type.GetType()
ou Assembly.GetType()
peuvent être utilisés :
<code class="language-csharp">// 如果 MyAssembly 被引用 Type type1 = Type.GetType(typeName); // 如果 MyAssembly 未被引用 Assembly asm = typeof(SomeKnownType).Assembly; Type type2 = asm.GetType(typeName);</code>
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!