Generische Objektinstanziierung mit parametrisiertem Konstruktor in C#
In C# ist es möglich, Instanzen generischer Typen mit parametrisierten Konstruktoren zu erstellen. Das bereitgestellte Codebeispiel stellt jedoch eine neue parameterlose Konstruktormethode für die Basisklasse bereit, die in realen Szenarien nicht immer praktikabel ist.
Um dieses Problem zu lösen, besteht eine Lösung darin, die Activator-Klasse zu verwenden. Der folgende Codeausschnitt demonstriert diesen Ansatz:
<code class="language-C#">return (T)Activator.CreateInstance(typeof(T), new object[] { weight });</code>
Dieser Code verwendet die Activator.CreateInstance-Methode, um ein neues Objekt vom Typ T zu instanziieren. Der Ausdruck typeof(T) gibt ein Type-Objekt des generischen Typs zurück. Der Konstruktor wird aufgerufen, indem die erforderlichen Parameter als Array von Objekten übergeben werden.
Es ist wichtig zu beachten, dass die new()-Einschränkung für einen generischen Typ nur verwendet wird, um sicherzustellen, dass der Compiler zur Kompilierungszeit prüft, ob ein öffentlicher Parameterloser Konstruktor vorhanden ist. Der eigentliche Mechanismus zur Instanzerstellung ist immer noch die Activator-Klasse.
Es ist jedoch zu bedenken, dass das Verlassen auf die Activator-Klasse zu einem gewissen Grad an Codegeruch führen kann, und es wird allgemein empfohlen, solche Anforderungen in aktuellen Versionen von C# zu vermeiden.
Das obige ist der detaillierte Inhalt vonWie kann ich generische Objekte mit parametrisierten Konstruktoren in C# instanziieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!