Aufruf virtueller Member im Konstruktor [Duplikat]

8

In meiner Anwendung verwende ich die gleiche Winform in verschiedenen Kontexten, um die Sichtbarkeit von Schaltflächen, das Aktivieren von Textfeldern und den Winform-Headertext zu steuern. Die Art, wie ich mich dafür entschieden habe, ist einfach, indem ich eine Zeichenkette an den Formkonstruktor übergebe und sie mit ein paar if-Anweisungen überprüfe, die wiederum die gewünschten Winform-Optimierungen enthalten.

%Vor%

Das funktioniert einwandfrei, jedoch erhalten die "Text" -Schlüsselwörter eine blaue, von ReSharper hinzugefügte Zeile mit der folgenden Nachricht: "Virtualitem-Aufruf im Konstruktor". Ist das ein potenzielles Problem oder einfach eine übermäßig enthusiastische ReSharper-Nachricht?

Jede Klärung oder Vorschläge zur Verbesserung meiner Umsetzung würden sehr geschätzt werden.

    
Sakkle 19.01.2009, 12:51
quelle

4 Antworten

9

Ein Aufruf eines virtuellen Members in der Basisklasse ctor könnte dazu führen, dass eine Logik in der Unterklasse ausgeführt wird, bevor die Unterklasse "ctor" aufgerufen wird (und damit das Objekt eine Chance erhält, sich selbst zu initialisieren) Staat).

Es ist nur eine nette Erinnerung, damit Sie wissen, dass Sie etwas tun, was möglicherweise zu einem unangenehmen unerwarteten Verhalten führen kann.

    
mookid8000 19.01.2009, 12:57
quelle
6

Zusätzlich zu den vorhandenen Antworten können Sie für Formulare einen Load-Ereignishandler hinzufügen:

%Vor%     
Jon Skeet 19.01.2009 13:20
quelle
3

Schließe einfach deine Klasse ab.

    
Ilya Ryzhenkov 19.01.2009 15:18
quelle
0

Ich würde vorschlagen, Ihre Klasse wie folgt neu zu schreiben:

%Vor%     
ng5000 19.01.2009 14:41
quelle