2010-05-21 8 views
6

From Jon Skeet's blog:¿.NET tiene un enlazador?

¿Qué significa el siguiente comentario?

// The line below only works when linked rather than 
    // referenced, as otherwise you need a cast. 
    // The compiler treats it as if it both takes and 
    // returns a dynamic value. 
    string value = com.MakeMeDynamic(10); 

Entiendo lo que es hacer referencia a un ensamblaje. Puede consultarlo al compilar los archivos del programa utilizando el modificador/ref: en la línea de comandos o puede agregar una referencia estática al ensamblado en Visual Studio.

Pero, ¿cómo se puede vincular a un conjunto en .NET? ¿Quiere decir que carga el ensamblaje usando Reflection (Assembly.LoadFile())? O, la API de Win32 LoadLibrary()? O, .NET tiene un enlazador del que nunca he oído hablar?

Respuesta

10

Es básicamente para Conjuntos de interoperabilidad primarios COM. En .NET 4, puede hacer referencia a ellos como normales o "vincularlos"/"incrustarlos", en cuyo caso terminará con solo los bits del PIA que le interesan incrustados en su propio ensamblaje.

Desde la línea de comandos, esta es la opción /link: del compilador C# 4.

+0

Gracias, Jon. Debería haber terminado de leer el artículo completo suyo al que me había vinculado, antes de hacer esta pregunta. Acabo de terminar de leerlo y algunos otros artículos sobre la función "No PIA". Entonces, ¿el atributo/link: es equivalente a la línea de comando de establecer la propiedad "Insertar tipos de interoperabilidad" de la referencia del ensamblado en True en Visual Studio 2010? (http://thedotnethub.blogspot.com/2009/11/clr4-no-pia.html) Además, ¿la opción/link: es una nueva que se introdujo en C# 4.0? –

+0

@Water: Sí, es el equivalente, y sí, es nuevo en .NET 4 y C# 4. –

+0

Muchísimas gracias, Jon. Por cierto, estoy leyendo la primera edición de tu libro "C# in Depth" y me encanta cada parte. –

Cuestiones relacionadas