Nehmen wir an, ich habe die folgenden Konstruktoren für Foo
in C #:
Ich suche nach einer Möglichkeit, den this()
-Teil nur dann auszuführen, wenn der connect
-Parameter true
ist. Ist das ein Weg, dies zu tun?
(Für Neugierige: Der Grund dafür ist, dass die Foo
-Klasse Objekte erzeugt, die sich mit bestimmten Dingen verbinden; wenn sie erstellt werden, sollten sie immer versuchen, eine Verbindung herzustellen. Im Moment erstelle ich einen Emulator ( oder MOCK) dafür, was die Foo
-Klasse erweitert.Das ist, wofür ich den protected
-Konstruktor hinzufüge, wenn dieser verwendet wird, sollte es die Option geben, keine tatsächliche Verbindung zu erstellen Ändern der Klasse Foo
so wenig wie möglich.)
Nein, Sie können this()
nicht auf diese Weise bedingungsabhängig aufrufen. Sie können jedoch den bedingten Code in den Konstruktor protected
verschieben und diesen Konstruktor einfach von public
one aufrufen:
Eine Möglichkeit besteht darin, eine Funktion init()
zu erstellen:
Sie können diese () Bedingung nicht aufrufen, so dass Sie stattdessen eine Methode verwenden müssen
%Vor%Ein anderer Weg (weiß nicht, ob es gut ist oder ob es für Ihre Bedürfnisse in Ordnung ist) ist:
%Vor%Auf diese Weise muss der Code, der Foo () aufruft, nicht geändert werden, aber Sie verlieren die geschützte Zugriffsberechtigung
Tags und Links c# constructor conditional