really annoying limitation of array cast
Code:
namespace ConsoleApplication1
{
class ImplicitlyConvertibleFromFoo
{
public ImplicitlyConvertibleFromFoo(Foo foo)
{
this.foo = foo;
}
Foo foo;
}
class Foo
{
public static implicit operator ImplicitlyConvertibleFromFoo(Foo foo)
{
return new ImplicitlyConvertibleFromFoo(foo);
}
}
class Program
{
static void Main(string[] args)
{
Foo[] fooArray = new Foo[4];
for(int i=0;i<fooArray.Length;++i)
{
fooArray[i] = new Foo();
}
ImplicitlyConvertibleFromFoo implicitlyConverted = fooArray[0];
// this is fine
ImplicitlyConvertibleFromFoo[] castArray = fooArray.Cast<ImplicitlyConvertibleFromFoo>().ToArray();
// above generates exception: An unhandled exception of type 'System.InvalidCastException' occurred in System.Core.dll
//Additional information: Unable to cast object of type 'ConsoleApplication1.Foo' to type 'ConsoleApplication1.ImplicitlyConvertibleFromFoo'.
}
}
}
does anyone know a way to easily convert arrays of user-defined types?