gpt4 book ai didi

c# - 遍历通用类的子类

转载 作者:行者123 更新时间:2023-11-30 22:34:15 27 4
gpt4 key购买 nike

我不知道如何准确地解释这个,但我还是要试一试。

我有一个基本的用户控件,它需要传递一个泛型类型。

public abstract class BaseControl<T> : UserControl where T : BaseClass, new()
{

}

Base Control 的目的是编辑 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/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com