收集实现特定接口而不进行转换的类型?

Joa*_*nge 0 .net c# interface

基本上我想知道特定命名空间中的所有类型是否实现了特定的接口IEnumerable.

我知道我能做到:

foreach type ...
    if type is IEnumerable
        ...
Run Code Online (Sandbox Code Playgroud)

但我不想只是为了查询它是否实现了一个接口来强制转换类型,因为无论如何都会抛弃转换.

Jos*_*dan 6

使用is运算符不是强制转换,它是一个测试,听起来像你想要的.C#中的类型转换是使用强制转换运算符(名称?)完成的,如下所示:

((IEnumerable)someCollection)
Run Code Online (Sandbox Code Playgroud)

或安全铸造操作员:

someCollection as IEnumerable
Run Code Online (Sandbox Code Playgroud)