How can I cast an object to IEnumerable?
I know that the object implements IEnumerable but I don\'t kn
It's hard to answer this without a concrete use-case, but you may find it sufficient to simply cast to the non-generic IEnumerable interface.
There are two reasons why this will normally work for most types that are considered "sequences".
IEnumerable.IEnumerable<T> interface inherits from IEnumerable, so the cast should work fine for the generic collection classes in System.Collections.Generic, LINQ sequences etc.EDIT:
As for why your provided sample doesn't work:
IEnumerable<Derived> as an IEnumerable<Base>.IEnumerable<T> is covariant, since variance is not supported for value-types - the cast from int[] (an IEnumerable<int>) --> IEnumerable<object> can't succeed.I ran into the same issue with covariance not supporting value types, I had an object with and actual type of List<Guid> and needed an IEnumerable<object>. A way to generate an IEnumerable when just IEnumerable isn't good enough is to use the linq Cast method
((IEnumerable)lhsValue).Cast<object>()