2 つのコンストラクター (C#) を持つクラスがあります。コード スニペットは次のとおりです。
public class FooBar()
{
public FooBar(string s)
{
// constructor 1, some functionality
}
public FooBar(int i) : this("My String")
{
// constructor 2, some other functionality
}
}
はい、上記のアプローチを使用して、あるコンストラクターを別のコンストラクターから呼び出すことができることを知っています。しかし、このシナリオでは、コンストラクター 2 を呼び出すと、コンストラクター 2 のステートメントが実行される前に、コンストラクター 1 のすべてのステートメントが実行されます。
私が望むのは、コンストラクター 2 のすべてのステートメントが実行された後、コンストラクター 1 を呼び出すことです。
私の正確な状況では、ユーザー認証を行っています。コンストラクター 1 はユーザー ID だけでユーザー情報を取得しますが、コンストラクター 2 は電子メールとパスワードを使用してユーザー認証を行います。ユーザーがデータベースにいる場合、ユーザー ID を取得し、コンストラクター 1 でクラスのすべてのプロパティを設定する必要があります。
追加情報が必要な場合はお知らせください。別のより良いアプローチがあると思われる場合は、提案を喜んでお聞きします。
UPDATE 1:なぜこのようなものが実装されていないのだろうか:
public FooBar(bool b)
{
// constructor 3, some more functionality
this.FooBar("My String"); // calling constructor 1
}