我正在为WinForms项目组织一个轻量级MVP模式。一切都编译并运行良好。但是,当我尝试在Visual Studio中以设计模式打开WinForm时,出现“路径中的非法字符”错误。我的WinForm使用泛型并从基本Form类继承。在WinForm中使用泛型有问题吗?“路径中存在非法字符”。 Visual Studio WinForm设计视图
这里是WinForm和基本Form类。
public partial class TapsForm : MvpForm<TapsPresenter, TapsFormModel>, ITapsView
{
public TapsForm()
{
InitializeComponent();
}
public TapsForm(TapsPresenter presenter)
:base(presenter)
{
InitializeComponent();
UpdateModel();
}
public IList<Taps> Taps
{
set { gridTaps.DataSource = value; }
}
private void UpdateModel()
{
Model.RideId = Int32.Parse(cboRide.Text);
Model.Latitude = Double.Parse(txtLatitude.Text);
Model.Longitude = Double.Parse(txtLongitude.Text);
}
}
基本形式MvpForm:
public class MvpForm<TPresenter, TModel> : Form, IView
where TPresenter : class, IPresenter
where TModel : class, new()
{
private readonly TPresenter presenter;
private TModel model;
public MvpForm()
{
}
public MvpForm(TPresenter presenter)
{
this.presenter = presenter;
this.presenter.RegisterView(this);
}
protected override void OnLoad(EventArgs e)
{
base.OnLoad(e);
if (presenter != null)
presenter.IntializeView();
}
public TModel Model
{
get
{
if (model == null)
throw new InvalidOperationException("The Model property is currently null, however it should have been automatically initialized by the presenter. This most likely indicates that no presenter was bound to the control. Check your presenter bindings.");
return model;
}
set { model = value;}
}
}
是的,设计师不支持通用的基础表单。你可能没有那么远,我猜它正在死于异常,因为你没有在设计器(构造函数,Load事件)中运行的代码中检查DesignMode属性。 – 2010-03-30 16:57:55