Хорошо, я понимаю, что это может быть странный вопрос. Но мне все равно нужно спросить. Это происходит следующим образом:
Предположим, у меня есть что-то вроде следующего:
type Foo() =
member this.MyFooFun i = 2*i
type Bar() =
inherit Foo()
member this.MyBarFun i = 3*i
type Baz() =
inherit Foo()
member this.MyBazFun i = 5*i
type FooSeq = seq<Foo>
Что я хочу сделать, так это отфильтровать все Foo из FooSeq, в котором есть член MyBarFun. Можно ли сделать что-нибудь подобное?
Я понимаю, что мне, вероятно, придется использовать оператор :?
, чтобы проверить, является ли каждый элемент Bar
, но, как я уже сказал, я должен спросить. Причина, по которой я бы предпочел этого не делать, заключается в том, что типы, соответствующие Foo
, Bar
и Baz
, лежат в библиотеке, разработанной где-то еще в компании. И в любой момент времени могут быть добавлены дополнительные типы, содержащие член MyBarFun
.
MyBarFun
могли быть через промежуточный тип или реализовывать интерфейс, такой какIMyBarFun
. - person Mark Pattison   schedule 16.07.2014