Heim > Backend-Entwicklung > C++ > Wie kann ich Parameter in generische Konstruktorinstanzen in C# einfügen?

Wie kann ich Parameter in generische Konstruktorinstanzen in C# einfügen?

Barbara Streisand
Freigeben: 2025-01-09 12:22:44
Original
911 Leute haben es durchsucht

How Can I Inject Parameters into Generic Constructor Instances in C#?

Injizieren von Parametern in generische Konstruktorinstanzen

Im Kontext einer generischen Methode, die das Erstellen einer Instanz eines bestimmten Typs erfordert, stellt sich die Frage : Wie können wir mit Situationen umgehen, in denen der Konstruktor für diesen Typ einen Parameter erfordert? Stellen Sie sich einen Fall vor, in dem BaseFruit einen Konstruktor besitzt, der eine ganzzahlige Gewichtung akzeptiert. Können wir eine Frucht innerhalb einer generischen Methode auf folgende Weise instanziieren:

public void AddFruit<T>() where T: BaseFruit {
    BaseFruit fruit = new T(weight); // new Apple(150)
    fruit.Enlist(fruitManager);
}
Nach dem Login kopieren

Im bereitgestellten Beispiel können wir einen Versuch beobachten, eine Apple-Instanz mit einer Gewichtung von 150 zu instanziieren. Dies ist jedoch bei diesem Ansatz nicht der Fall machbar, es sei denn, BaseFruit ist mit einem parameterlosen Konstruktor ausgestattet, der die nachträgliche Zuweisung von Mitgliedsvariablen ermöglicht. Leider kann sich dieser Ansatz in praktischen Szenarien als unpraktisch erweisen.

Um dieses Problem anzugehen, können wir die Activator-Klasse nutzen, wie im folgenden vereinfachten Beispiel gezeigt:

return (T)Activator.CreateInstance(typeof(T), new object[] { weight });
Nach dem Login kopieren

Beachten Sie, dass „employing Die new()-Einschränkung für T dient ausschließlich dazu, sicherzustellen, dass der Compiler während der Kompilierung die Existenz eines öffentlichen, parameterlosen Konstruktors überprüft. Die Activator-Klasse ist letztendlich für den Typerstellungsprozess verantwortlich.

Es ist wichtig, die Existenz des spezifischen Konstruktors zu überprüfen, den Sie verwenden möchten. Darüber hinaus lohnt es sich zu überlegen, ob eine solche Anforderung notwendig ist, da sie möglicherweise auf ein Code-Design-Problem hinweist, das in aktuellen C#-Implementierungen vermieden werden könnte.

Das obige ist der detaillierte Inhalt vonWie kann ich Parameter in generische Konstruktorinstanzen in C# einfügen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage