Ich habe eine Klasse mit zwei Konstruktoren (C #). Hier ist das Code-Snippet:
%Vor%Ja, ich weiß, dass ich einen Konstruktor unter Verwendung des oben genannten Ansatzes von einem anderen Konstruktor aufrufen kann. Aber in diesem Szenario, wenn ich Konstruktor 2 aufrufen, werden alle Anweisungen in Konstruktor 1 ausgeführt, bevor die Anweisung in Konstruktor 2 ausgeführt wird.
Was ich will ist, dass nachdem alle Anweisungen in Konstruktor 2 ausgeführt wurden, dann ruft er den Konstruktor 1 auf.
In meiner exakten Situation mache ich Benutzerauthentifizierung. Konstruktor 1 ruft Benutzerinformationen nur mit der Benutzer-ID ab, aber Konstruktor 2 führt die Benutzerauthentifizierung mit E-Mail und Kennwort durch. Wenn ein Benutzer in der Datenbank ist, erhält er die Benutzer-ID, und nun möchte ich, dass Konstruktor 1 alle Eigenschaften der Klasse auffüllt.
Bitte lassen Sie mich wissen, wenn Sie zusätzliche Informationen benötigen. Wenn Sie denken, dass es einen anderen besseren Ansatz gibt, würde ich gerne den Vorschlag hören.
UPDATE 1: Ich frage mich, warum so etwas nicht implementiert ist:
%Vor%Verwenden Sie in diesem Fall keine Konstruktoraufrufe, sondern etwas wie:
%Vor% Wo ich vermutete, dass Init1(..)
und Init2(..)
Methoden sind, die sich auf eine bestimmte Initialisierungslogik des entsprechenden Konstruktors beziehen.
Tatsächlich können Sie diese Funktionsaufrufe so arrangieren, dass sie Ihren Anforderungen besser entsprechen.
Bester Ansatz - setzen Sie diese Logik nicht in den Konstruktor. Teilen Sie es mit anderen Methoden auf, die Sie nach Belieben aufrufen können, ohne sich Gedanken über die Verkettung von Konstruktoren machen zu müssen.
Tags und Links .net c# constructor oop c#-4.0