gpt4 book ai didi

.Net 使用反射来定义OfType

转载 作者:行者123 更新时间:2023-12-04 07:07:24 24 4
gpt4 key购买 nike

我正在使用 System.Reflection 加载在设计时无法加载的类型。我需要拉出这种类型的集合中的所有控件,但是,我的 OfType 命令似乎不喜欢反射语法。这是“接近”我得到的。

Dim ControlType As Type = System.Reflection.Assembly.GetAssembly( _
GetType(MyAssembly.MyControl)) _
.GetType("MyAssembly.MyUnexposedControl")

Dim Matches as List(Of Control) = MyBaseControl.Controls.OfType(Of ControlType)

所以那个代码是伪造的,它不起作用,但你明白我想要做什么。那么有没有办法使用反射并获取所有该类型的控件?

最佳答案

OfType是一个泛型方法,所以你可以给它一个静态类型(例如 OfType(Of String) ),而不是在运行时确定的 System.Type 。

你可以这样做:

Dim CustomControlType as Type = LoadCustomType()

MyBaseControl.Controls.Cast(Of Control)().Where(Function(ctrl) ctrl.GetType().IsAssignableFrom(CustomControlType))

使用 Cast(Of Control)转换 ControlCollection ( IEnumerable ) 到 IEnumerable<Control> ,然后获取所有 lambda 扩展。

关于.Net 使用反射来定义OfType,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/918217/

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