相关疑难解决方法(0)

如何确定对象的类型是否实现IEnumerable <X>,其中X使用Reflection从Base派生

给一个基类Base,我想写一个方法Test,像这样:

private static bool Test(IEnumerable enumerable)
{
...
}
Run Code Online (Sandbox Code Playgroud)

这样的测试如果O类型实现的任何接口返回true IEnumerable<X>,其中X从派生Base,所以,如果我这样做:

public static IEnumerable<string> Convert(IEnumerable enumerable)
{
    if (Test(enumerable))
    {
        return enumerable.Cast<Base>().Select(b => b.SomePropertyThatIsString);
    }

    return enumerable.Cast<object>().Select(o => o.ToString());
}
Run Code Online (Sandbox Code Playgroud)

......使用Reflection,它会做正确的事情.我确信这是跨越所有类型接口的问题,找到符合要求的第一个,但我很难找到IEnumerable<>它们之间的通用.

当然,我可以考虑一下:

public static IEnumerable<string> Convert(IEnumerable enumerable)
{
    return enumerable.Cast<object>().Select(o => o is Base ? ((Base)o).SomePropertyThatIsString : o.ToString());
}
Run Code Online (Sandbox Code Playgroud)

......但是把它想象成一个思想实验.

c# linq reflection

5
推荐指数
1
解决办法
1万
查看次数

标签 统计

c# ×1

linq ×1

reflection ×1