我有以下的WinForms類:通用構造函數:T entity = new T();
class EntityEditorForm<T>: System.Windows.Forms.Form
where T: ICloneable<T> {}
class EntityCollectionEditorForm<T> : System.Windows.Forms.Form
where T: ICloneable<T> {}
第一種形式類是<T>
,在運行時根據T.
第二種類型創建控制編輯器是一個管理器用於收集<T>
並具有添加,編輯和刪除功能。該集合顯示在listview控件中,並使用自定義屬性通過反射填充字段。
用於添加和編輯按鈕的代碼如下所示:
private void buttonEdit_Click (object sender, System.EventArgs e)
{
T entity = default(T);
entity = (T) this.listView.SelectedItems[0].Tag;
new EntityEditor<T>(entity).ShowDialog(this);
}
private void buttonEdit_Click (object sender, System.EventArgs e)
{
T entity = new T(); //This is the code which is causing issues
entity = (T) this.listView.SelectedItems[0].Tag;
new EntityEditor<T>(entity).ShowDialog(this);
}
的default(T)
作品編輯的情況下,但我在與添加的場景麻煩。 T entity = new T();
似乎不合法。
很顯然,我不知道如何在相同的where子句中添加多個約束。修改聲明'類EntityCollectionEditorForm < T >:System.Windows.Forms.Form中,其中T:ICloneable < T >,新的(){}'工作。 – 2012-01-09 09:41:54
我一直在閱讀文章,但似乎無法理解約束條件。任何臥鋪解釋將不勝感激:)。 – 2012-01-09 09:43:37