Bedingter Konstruktor in C # aufrufen

8

Nehmen wir an, ich habe die folgenden Konstruktoren für Foo in C #:

%Vor%

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.)

    
Lee White 27.05.2013, 07:20
quelle

3 Antworten

7

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:

%Vor%     
Eren Ersönmez 27.05.2013, 07:26
quelle
6

Eine Möglichkeit besteht darin, eine Funktion init() zu erstellen:

%Vor%     
Bart Friederichs 27.05.2013 07:22
quelle
2

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

    
Fabio Marcolini 27.05.2013 07:23
quelle

Tags und Links