私は C# と OOP を理解し始めていますが、回避できないような問題があります。いくつかのプロパティを (System.Collections.Generic.Dictionary オブジェクトの形式で) 保持する DataSet というクラスがあります。クラス内には、データベースからデータをロードするメソッドがあり、これらのメソッドを使用して DataSet を初期化する必要があります。基本的に、Main メソッドからインスタンス化するときに、DataSet オブジェクトにすべてのプロパティを設定する必要があります。
私が持っているのは次のとおりです(詳細は省略します):
public class DataSet
{
public IDictionary<string, MyClass1> Property1 { get; set; };
public IDictionary<string, MyClass2> Property2 { get; set; };
public IDictioanry<string, MyClass3> Property3 { get; set; };
public DataSet()
{
Property1 = new Dictionary<string, MyClass1>();
Property2 = new Dictionary<string, MyClass2>();
Property3 = new Dictionary<string, MyClass3>();
// Set Property1
// Set Property2
// Set Property3 (can only be done when Property1 is known)
}
private void GetProperty1(/* something? */)
{
// Loads the data from a database.
}
private static Dictionary<string, MyClass1> GetProperty1Alternative(DataSet dataSet)
{
// Same thing but static, so needs instance ref.
}
// Similarly for Property2 and Property3
}
私が望むのは、コンストラクターでプロパティを設定することです。私の質問は基本的に次のとおりです。
- 私がやっていることは、それを行うための正しい方法ですか?
- はいの場合、メソッドを静的にする必要があります(メソッドへの参照によってインスタンスを渡します)。これには、クラス DataSet を静的にする必要があります(およびそのすべてのプロパティ)、または DataSet を作成せずに私が行っていることを行う方法はありますか静的?
- 重要な問題は、Property1 が既知/設定された後にのみ Property3 を設定できることです。それが可能かどうかはわかりません...
どんな助けでも大歓迎です。