Convert / Cast IEnumerable to IEnumerable

后端 未结 4 1149
甜味超标
甜味超标 2020-12-03 00:41

I have a class (A web control) that has a property of type IEnumerable and would like to work with the parameter using LINQ.

Is there any way to cast / convert / inv

4条回答
  •  失恋的感觉
    2020-12-03 01:02

    Does your Method2 really care what type it gets? If not, you could just call Cast():

    void Method (IEnumerable source)
    {
        Method2(source.Cast());
    }
    
    
    

    If you definitely need to get the right type, you'll need to use reflection.

    Something like:

    MethodInfo method = typeof(MyType).GetMethod("Method2");
    MethodInfo generic = method.MakeGenericMethod(type);
    generic.Invoke(this, new object[] {source});
    

    It's not ideal though... in particular, if source isn't exactly an IEnumerable then the invocation will fail. For instance, if the first element happens to be a string, but source is a List, you'll have problems.

    提交回复
    热议问题