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 : Visual Studio에서
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 속성을 확인하지 않았기 때문에 예외로 인해 죽어 가고있는 것 같다. –