以下のコードでは、最初のWebTestingAppコンストラクタが新しいインスタンスを返す前に2番目のWebTestingAppコンストラクタが呼び出せる方法はありますか?私はコンストラクタにいくつかの読み取り専用フィールドを設定したいと思います。コピー/貼り付けが不十分なので、私はどのようにできるのか分かりません。複数の呼び出しで連鎖するコンストラクタ
答えはコンストラクタチェーンと何か関係がありますが、私はそれを行う方法を理解できません。なぜなら、2番目のWebTestingAppコンストラクタが暗黙的にbase()を呼び出すからです。(これはクラスの外部ユーザIRemoteFileインスタンスとIWebServiceGatewayインスタンスを提供する必要はありません)。 WebTestingAppはTestingAppから派生し
protected TestingApp() : this(S3File.Instance, WebServiceGateway.Instance) { }
internal TestingApp(IRemoteFile remoteFile, IWebServiceGateway webServiceGateway)
{
this.remoteFile = remoteFile;
this.webServiceGateway = webServiceGateway;
}
:
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
}
ここでは、基本クラスTestingAppのコンストラクタです。 S3FileとWebServiceGatewayはシングルトンです。
どうすればよいでしょうか? IRemoteFileとIWebServiceGatewayのインスタンスでWebTestingApp(Result、BrowserApp)を呼び出そうとしませんか? –
私はあなたの質問を誤解しました。謝罪。私の答えを編集します。 –
編集された鉱山、それからあなたは同じものを考え出した。ああ、うれしいことに、あなたはソートされています... –