Как использовать Type.GetType в выражении lambda

Я пытаюсь выполнить следующую инструкцию в С#:

Form form = this.MdiChildren.FirstOrDefault(x => x is Type.GetType("MyFormName"));

Но у меня есть ошибка: Ожидаемое имя метода.

Каким будет правильное использование инструкции.

1 ответ

Поскольку у вас есть экземпляр Type, вам нужно использовать IsAssignableFrom вместо is:

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

Это, конечно, предполагает, что вы действительно не можете ссылаться на фактический тип во время компиляции. Если вы можете, то вместо этого вы можете упростить этот код:

.OfType<myformname>().FirstOrDefault();
</myformname>

Что будет иметь что-то внутренне, которое напоминает:

x is MyFormName

Как работает оператор is.

licensed under cc by-sa 3.0 with attribution.