No se puede convertir el objeto de tipo 'System.Object []' a 'MyObject []', ¿qué da?

Guión:

Actualmente estoy escribiendo una capa para abstraer 3 servicios web similares en una clase utilizable. Cada servicio web expone un conjunto de objetos que comparten puntos en común. He creado un conjunto de objetos intermedios que explotan lo común. Sin embargo, en mi capa necesito convertir entre los objetos del servicio web y mis objetos.

He utilizado la reflexión para crear el tipo adecuado en el tiempo de ejecución antes de hacer la llamada al servicio web de la siguiente manera:

    public static object[] CreateProperties(Type type, IProperty[] properties)
    {
        //Empty so return null
        if (properties==null || properties.Length == 0)
            return null;

        //Check the type is allowed
        CheckPropertyTypes("CreateProperties(Type,IProperty[])",type);

        //Convert the array of intermediary IProperty objects into
        // the passed service type e.g. Service1.Property
        object[] result = new object[properties.Length];
        for (int i = 0; i < properties.Length; i++)
        {
            IProperty fromProp = properties[i];
            object toProp = ReflectionUtility.CreateInstance(type, null);
            ServiceUtils.CopyProperties(fromProp, toProp);
            result[i] = toProp;
        }
        return result;
    }

Aquí está mi código de llamada, de una de mis implementaciones de servicio:

Property[] props = (Property[])ObjectFactory.CreateProperties(typeof(Property), properties);
_service.SetProperties(folderItem.Path, props);

Por lo tanto, cada servicio expone un objeto "Propiedad" diferente que oculto detrás de mi propia implementación de mi interfaz de propiedad IP.

El código de reflexión funciona en pruebas unitarias produciendo una matriz de objetos cuyos elementos son del tipo apropiado. Pero el código de llamada falla:

System.InvalidCastException: no se puede convertir el objeto de tipo 'System.Object []' para escribir 'MyProject.Property []

¿Algunas ideas?

¿Tenía la impresión de que cualquier conversión desde Objeto funcionará siempre que el objeto contenido sea convertible?

Respuestas a la pregunta(6)

Su respuesta a la pregunta