我不知道如何确切地解释这一点,但是我还是去了。
我有一个基本的用户控件,它需要传递一个通用类型。
public abstract class BaseControl<T> : UserControl where T : BaseClass, new()
{
}
基本控件的目的是编辑BaseClass子级的属性。
然后我有几个类似于以下的控件
public partial class MyControl : BaseControl<MyClass>
{
}
“ MyClass”继承了BaseClass。
因此,可以说我拥有MyControl和其他与页面中使用的控件类似的控件。
我可以执行以下类似的操作来获取从BaseClass继承的所有控件吗?
foreach(BaseControl<T> c in this.Controls)
{
//do stuff
}
最佳答案
不容易。如果您有一个非通用的BaseControl
,而BaseControl<T>
继承自:
public abstract class BaseControl : UserControl {}
public abstract class BaseControl<T> : BaseControl where T : BaseClass, new()
然后
foreach(BaseControl c in this.Controls.OfType<BaseControl>())
{
//do stuff
}
您也可以将任何不依赖
T
的成员放在非泛型类中。除此之外,您还可以检查每个控件的类型层次结构,并查看它们中的任何一个是否使用
BaseControl<T>
的通用形式或非通用形式,但是比这复杂一些。关于c# - 遍历泛型类的子类,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7914574/