我创建了一个定义主视图的泛型类:
public abstract class MainView<T, U> : UserControl, IMainView
where T : ControllerMainView<U>
where U : class
{
...
}
我正在使用它来创建我的工作主视图
public partial class UserControlMainViewJobs : MainView<ControllerJobs, Job>
{
...
}
为了实现这一点,ControllerJobs显然需要成为ControllerMain视图的衍生物。
public class ControllerJobs : ControllerMainView<Job>
{
...
}
此外,所有类都有空构造函数,设计人员可以使用它。
仍然无法在Designer中打开UserControlMainViewJobs。错误消息是:
GenericArguments [0],&#39; FM.Auftragsverwaltung.Controller.ControllerJobs&#39;,&#39; FM.Auftragsverwaltung.View.MainViews.MainView`2 [T,U]&#39;违反了类型参数&#39; T&#39;的约束。
这没有任何意义。但这似乎是通用用户控件的一般问题。在StackOverFlow上搜索给了我(及其变体):
他们建议创建一个静态的&#34;中间类&#34;有一个派生自MainView的类,但不是从泛型类派生的。
所以我创建了
public class MainViewJobsStatic : MainView<ControllerJobs, Job>
{
...
}
然后将UserControlMainViewJobs更改为
public partial class UserControlMainViewJobs : MainViewJobsStatic
{
...
}
奇怪的是,我仍然得到同样的错误。这让我真的很开心,因为我发现这个解决方法非常令人沮丧。
有没有人知道如何在派生于泛型类的类上使用设计器?
*编辑* ControllerMainView的定义
public abstract class ControllerMainView<T> where T : class
{
...
}