es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

.NET Core WPF: Error de compilación en la aplicación con tipo de conversión dinámica.

Actualmente estoy tratando de crear un complemento con GUI (WPF) para Solidworks utilizando la API de Solidworks. Creé el proyecto con Visual Studio 2019 utilizando .net-core 3.1. Esta API utiliza principalmente funciones con tipo de retorno dynamic. Anteriormente utilicé este código para una aplicación de consola (también utilizando .net-core 3.1) sin obtener ningún error de compilación.

using SW = SldWorks;
using System.Windows;

namespace dfdfdf
{
    public partial class App : Application
    {
        private void App_Startup(object sender, StartupEventArgs e)
        {
            //Conectar a SW
            SW.SldWorks SolidWorksApp = null;
            SW.ModelDoc2 swDoc;
            SolidWorksApp = new SldWorks.SldWorks();

            //Conectar al documento --> Error de compilación
            swDoc = SolidWorksApp.ActiveDoc;
        }
    }
}

Ahora, con el proyecto WPF, obtengo el siguiente error:

El error solo se muestra cuando “solo compilar” está seleccionado en la lista de errores

CS2066 (No se puede convertir implícitamente el tipo ‘type1’ a ‘type2’. Existe una conversión explícita (¿falta una conversión?))

“ActiveDoc” tiene un valor de retorno dynamic y la conversión explícita funciona bien:

swDoc = (SW.ModelDoc2) SolidWorksApp.ActiveDoc;

Pero me pregunto por qué esto causa un error en una aplicación WPF pero no en una aplicación de consola. Según entiendo, no debería obtener errores de compilación en absoluto al realizar una conversión de tipo dynamic, ya que la conversión de tipo se realiza en tiempo de ejecución y no en tiempo de compilación.

Para las referencias COM, activé la opción “embedded interoptypes”, ¿hay alguna otra opción que me haya perdido que cause este comportamiento?

Si .core necesita las conversiones explícitas, estoy bien con eso. Solo espero que alguno de ustedes pueda decirme por qué hay una diferencia entre las aplicaciones WPF y las aplicaciones de consola en este sentido.

¡Gracias!

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Solución para el error de compilación en un proyecto WPF con API de Solidworks

    El error de compilación en un proyecto WPF con la API de Solidworks ocurre debido a la diferencia en la forma en que se manejan los tipos de retorno dinámicos en las aplicaciones WPF y de consola. En una aplicación de consola, la conversión de tipos se realiza en tiempo de ejecución y no en tiempo de compilación, lo cual no es el caso en el proyecto WPF.

    Para solucionar el error, se requiere una conversión de tipo explícita, como se muestra a continuación:

    swDoc = (SW.ModelDoc2) SolidWorksApp.ActiveDoc;
    

    Además, asegúrese de que la opción “embedded interop types” esté activada para las Referencias a COM. Esto debería resolver el error de compilación en el proyecto WPF utilizando la API de Solidworks.

    En resumen, el error de compilación ocurre debido a la diferencia en el manejo de tipos de retorno dinámicos entre las aplicaciones WPF y de consola. La conversión de tipo explícita y la activación de la opción “embedded interop types” para las Referencias a COM pueden resolver el error.

Comments are closed.