In C# kann eine Zeichenfolge, die einen Typnamen enthält, in das entsprechende Type-Objekt konvertiert werden. Die für diese Konvertierung verwendete Methode hängt jedoch davon ab, ob der Typ in derselben Assembly wie der aufrufende Code oder in einer anderen Assembly definiert ist.
Type.GetType(string)
Wenn der Typ in derselben Assembly definiert ist, können Sie die Methode Type.GetType(string)
verwenden und den vollständig qualifizierten Typnamen als Zeichenfolge bereitstellen. Um beispielsweise das int
des Datentyps Type
abzurufen, würden Sie Folgendes verwenden:
<code class="language-csharp">Type.GetType("System.Int32");</code>
Assembly.GetType(string)
Wenn der Typ in einer anderen Assembly definiert ist, müssen Sie auch den Assemblynamen angeben. Dies kann mit der Methode Assembly.GetType(string)
erreicht werden. Rufen Sie zunächst einen Verweis auf die Assembly ab und verwenden Sie dann diesen Verweis, um das Type
abzurufen:
<code class="language-csharp">Assembly asm = typeof(SomeKnownType).Assembly; Type type = asm.GetType("Namespace.MyClass");</code>
Stellen Sie sicher, dass Sie den Namespace des Typs in die Zeichenfolge einschließen, die für Type.GetType()
oder Assembly.GetType()
bereitgestellt wird. Darüber hinaus kann es bei Assemblys mit starkem Namen erforderlich sein, die vollständige Assemblyidentität einschließlich Version, Kultur und Public-Key-Tags anzugeben.
Stellen Sie sich das folgende Szenario vor, in dem eine Zeichenfolge den vollständig qualifizierten Namen eines Typs enthält:
<code class="language-csharp">string typeName = "Namespace.MyClass, MyAssembly";</code>
Abhängig davon, ob MyAssembly
von der aufrufenden Assembly referenziert wird, kann entweder Type.GetType()
oder Assembly.GetType()
verwendet werden:
<code class="language-csharp">// 如果 MyAssembly 被引用 Type type1 = Type.GetType(typeName); // 如果 MyAssembly 未被引用 Assembly asm = typeof(SomeKnownType).Assembly; Type type2 = asm.GetType(typeName);</code>
Das obige ist der detaillierte Inhalt vonWie bestimmt man den Objekttyp anhand seiner String-Darstellung in C#?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!