Gegeben mein Code unten, gibt es eine Möglichkeit, dass der erste WebTestingApp-Konstruktor den zweiten aufrufen kann, bevor er die neue Instanz zurückgibt? Ich möchte einige schreibgeschützte Felder im Konstruktor setzen und, kurz vor dem Kopieren/Einfügen, kann ich nicht sehen, wie ich es kann.Konstruktor, der mit mehreren Anrufen verkettet
Ich glaube, dass die Antwort etwas mit Konstruktorverkettung zu tun haben wird, aber ich kann nicht herausfinden, wie es geht, da der zweite WebTestingApp-Konstruktor implizit base() aufruft (was als externe Benutzer der Klasse wichtig ist) sollte keine IRemoteFile- und IWebServiceGateway-Instanzen bereitstellen müssen).
internal WebTestingApp(Result result, BrowserApp browserApp, IRemoteFile remoteFile, IWebServiceGateway webServiceGateway) : base(remoteFile, webServiceGateway)
{
// TODO: Need to invoke WebTestingApp(Result result, BrowserApp browserApp)
}
public WebTestingApp(Result result, BrowserApp browserApp)
{
// Set readonly vars here
}
Hier ist die Basisklasse TestingApp des Konstrukteurs:
protected TestingApp() : this(S3File.Instance, WebServiceGateway.Instance) { }
internal TestingApp(IRemoteFile remoteFile, IWebServiceGateway webServiceGateway)
{
this.remoteFile = remoteFile;
this.webServiceGateway = webServiceGateway;
}
WebTestingApp von TestingApp abgeleitet ist. S3File und WebServiceGateway sind Singletons.
Ich bin mir nicht sicher, dass das funktionieren würde? Würde es nicht versuchen, WebTestingApp (Result, BrowserApp) mit IRemoteFile und IWebServiceGateway-Instanzen aufzurufen? –
Ich habe Ihre Frage falsch gelesen. Entschuldigung. Wird meine Antwort bearbeiten. –
Edited Mine, dann sah, dass Sie mit dem gleichen kommen würden. Naja, froh, dass du sortiert bist ... –