如何在表达式lambda中使用Type.GetType

3
我将尝试在 C# 中执行下一个指令:
Form form = this.MdiChildren.FirstOrDefault(x => x is Type.GetType("MyFormName"));

但我遇到了一个错误:需要方法名。 正确使用该指令应该是什么?

1
如果这个问题是关于特定的错误信息,那么它与lambda表达式无关 - 在这种情况下,您应该将问题简化为类似于 bool a = x is Type.GetType("MyFormName"); 的形式。 - O. R. Mapper
1个回答

7

由于您有一个 Type 实例,因此需要使用 IsAssignableFrom 而不是 is

x => Type.GetType("MyFormName").IsAssignableFrom(x.GetType())

当然,这假设在编译时确实无法引用实际类型。如果可以,在代码简化的情况下,您可以使用以下代码:
.OfType<MyFormName>().FirstOrDefault();

这将内部拥有类似于以下内容的东西:

x is MyFormName

这就是 is 运算符的预期使用方式。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接