以下是接口方法的略微更新版本:
void ShowDialog<TParentForm, TDialogForm, TModel, TEntity>(TParentForm t, TDialogForm m, Action callback)
where TParentForm : UserControl
where TModel : class, IModel<TEntity>, new()
where TDialogForm : Form, IEditableItem<TEntity>, new();
在之前的版本中,我做了一些假设,因此在测试和改进阶段中,方法签名已经发生了变化。对我来说,这仍然是一个教育性的练习,所以我仍然想知道如何完成它,而不是简单地选择捷径。
该方法的一个示例实现:
public void ShowDialog<TParentForm, TDialogForm, TModel, TEntity>(TParentForm t, TDialogForm m, Action callback)
where TParentForm : UserControl
where TModel : class, IModel<TEntity>, new()
where TDialogForm : Form, IEditableItem<TEntity>, new()
}
}
我不太确定为什么 'TDialogForm m' 参数仍然存在,因为它似乎在任何地方都没有被使用。
如何使用该方法:
private void BtnAddNewServiceClick(object sender, EventArgs e)
{
Presenter.ShowDialog<ServerRolesControl, AddNewServiceForm, ServiceModel, Role>(this, new AddNewServiceForm(), SetAddedRolesLabel);
}
private void BtnViewAllServicesClick(object sender, EventArgs e)
{
Presenter.ShowDialog<ServerRolesControl, ViewRolesForm, ServiceModel, Role>(this, new ViewRolesForm(), SetDeletedRolesLabel);
}
我应该更新接口方法,但是让它正常工作非常痛苦,现在我宁愿不去碰它 =)。