Heim >Backend-Entwicklung >C++ >Wie kann ich mithilfe von Reflection dynamisch generische Objekte in C# erstellen?
Verwenden Sie Reflektion, um generische Objekte in C# dynamisch zu erstellen
In C# stoßen wir häufig auf Situationen, in denen wir Objekte basierend auf Typzeichenfolgen dynamisch erstellen müssen. Dieser Ansatz verwendet Reflektion, um explizite Typdeklarationen zu vermeiden.
Bedenken Sie die folgende Klassenstruktur:
<code class="language-csharp">public class Item { } public class Task<T> { } public class TaskA<T> : Task<T> { } public class TaskB<T> : Task<T> { }</code>
Unser Ziel ist es, mithilfe von Reflektion dynamisch eine Instanz von TaskA oder TaskB zu erstellen. Da der Typ nicht im Voraus bekannt ist, verlassen wir uns auf die Typzeichenfolge, z. B. „namespace.TaskA“ oder „namespace.TaskAB“.
Durch Reflexion können wir es wie folgt erreichen:
<code class="language-csharp">var type = Type.GetType("namespace.TaskA`1"); // 将“namespace”替换为您实际的命名空间 Type[] typeArgs = { typeof(Item) }; var makeme = type.MakeGenericType(typeArgs); object instance = Activator.CreateInstance(makeme);</code>
Diese Methode erstellt dynamisch eine Instanz von TaskA
<code class="language-csharp">Type type = typeof(IReadOnlyDictionary);</code>
Das obige ist der detaillierte Inhalt vonWie kann ich mithilfe von Reflection dynamisch generische Objekte in C# erstellen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!