No, Cast
treats each item as Object
and casts it to the target type, so it can't use user-defined conversions because conversion are resolved statically. Instead you can just do this:
collection.Select(x => (YourType)x)
Question
When I define an implicit cast operator, then attempt to invoke it on a whole collection of objects at once using the Cast<T>
extension method, I get an InvalidCastException. Is there any workaround for this problem?
Solution
No, Cast
treats each item as Object
and casts it to the target type, so it can't use user-defined conversions because conversion are resolved statically. Instead you can just do this:
collection.Select(x => (YourType)x)
OTHER TIPS
No.
Cast
is a CLR method. It does not incorporate C# specific binding rules because it is independent of any specific CLR language. Implicit conversions are specific to a few .NET languages.
You have to create your own version of Cast
.