我有这些类:
class Foo<T1, T2> : Form
where T1, T2 : EventArgs
class MiddleGoo : Foo<X,Y>
class Goo : MiddleGoo
X和Y只是从EventArgs派生的简单类。
我在设计器中看到了Goo,但我想创建一个类Boo,让它在Foo和Goo之间,就像这样:
class Boo<T1, Y> : Foo<T1, Y>
where T1 : EventArgs
class MiddleGoo : Boo<X,Y>
class Goo : MiddleGoo
无法使用中间类进行解决,有什么想法吗?
编辑:我的意思是Y和X是像YEventArgs和XEventArgs这样的类,我的问题是在我将Y定义为T2时,在设计类Boo中如何看到它,但仍希望通过T1保持其通用性。
编辑2:我刚意识到我拼错了Y类的某些内容...
public class Foo<T1, T2> : Form
where T1 : EventArgs
where T2 : EventArgs
{
}
public class Boo<T1> : Foo<T1, MyEventArgs2>
where T1 : EventArgs
{
}
public class MiddleGoo : Boo<MyEventArgs1>
{
}
class Goo : MiddleGoo
{
}
public class MyEventArgs2 : EventArgs
{
}
public class MyEventArgs1 : EventArgs
{
}
我想澄清一下,在设计师中我无法看到Boo...(MiddleGoo也看不到,但我不需要它)
Foo
的声明没有改变,第二段代码肯定是无效的,因为Y
不继承自EventArgs
。这是你的“中间”类吗?这看起来像一个X-Y问题。你想做什么?Winforms设计器不喜欢_forms_,更不用说带有泛型参数的继承表单了。 - stuartdY:EventArgs
的情况下,class Boo<T1, Y> : Foo<T1, Y> where T1 : EventArgs
才是有效的。这里的Y
是一个泛型参数名,它不是你所说的继承自EventArgs
的Y
。 - Reza Aghaei