我有一个重载构造函数的类。我想对代码进行重新分解,以便对构造函数的一种形式的调用将参数转换为另一种构造函数接受的格式,然后调用它。如何在同一对象的构造函数中调用不同的构造函数?
这里是我目前拥有的三个构造函数的代码:
/// <summary>
/// Original Constructor accepting a single dataset
/// </summary>
/// <param name="theData"> The dataset containing the tables to be displayed</param>
public DataForm(System.Data.DataSet theData)
{
InitializeComponent();
// Ensure a DataSets has been passed for display
if (theData != null)
{
// Create a new list and add the single dataset to it
List<DataSet> tempDataList = new List<DataSet>();
tempDataList.Add(theData);
// Assign the list of datasets to the member variable
this.m_DSList = tempDataList;
}
CreateTabPages();
}
/// <summary>
/// Construct the form with tab pages assigned for each dataset
/// </summary>
/// <param name="DataArray">A collection of datasets, each to be displayed on their own tab page</param>
public DataForm(DataSet[] DataArray)
{
InitializeComponent();
// Ensure some DataSets have been passed for display
if (DataArray != null && DataArray.Length > 0)
{
// Assign the list of datasets to teh member variable
this.m_DSList = new List<DataSet>(DataArray);
}
CreateTabPages();
}
/// <summary>
/// Construct the form with tab pages assigned for each dataset
/// </summary>
/// <param name="DataList">A collection of datasets, each displayed on their own tab page</param>
public DataForm(List<System.Data.DataSet> DataList)
{
InitializeComponent();
// Assign the list of datasets to teh member variable
this.m_DSList = DataList;
CreateTabPages();
}
正如你可以看到有重复代码的前两个构造函数,因此重新分解。
我知道我可以有一个确实的对象初始化的方法和调用这个从每个构造函数,但是这似乎并不很优雅。
任何人都可以点我在正确的方向? 谢谢。
你要离开'm_DSList'未初始化(或任何它被宣布为)如果前两个构造函数接收空? – BoltClock
** CreateTabPages()**方法将处理m_DSList为空,但很好,你发现它。我会相应地评论我的代码。 – TeamWild