Pregunta

este libro en C # y .NET y estoy aprender un montón de cosas interesantes. He leído la parte donde el autor habla acerca de la carga dinámicamente una asamblea y la creación de una instancia de un tipo en esa asamblea.

En AS3, es posible hacer el mismo tipo de cosas, excepto por una cosa: usted puede pedir que el compilador no compilar un conjunto de la clase, pero para comprobar la seguridad de tipos. He aquí un ejemplo:

//Defined in an external library
public class A {...}


//In my application, I tell the compiler to type check A, but not compile it
var a:A = new A();
a.whatever();

En tiempo de ejecución en mi código de la aplicación, puedo cargar dinámicamente mi biblioteca externa que contiene la definición de la clase A, cargar esas definiciones en ApplicationDomain de mi solicitud y todo va a funcionar bien. No hay necesidad de reflexión!

¿Es esto posible en C #?

En otras palabras, puedo dar instrucciones al compilador de C # a typecheck contra un montón de clase (digamos, en una biblioteca), pero excluirlos de la compilación?

¿Fue útil?

Solución

acabo leer este

Action Script es un lenguaje dinámico, que ofrece como un "bono especial", una función de verificación de tipo, que ayuda a capturar errores en tiempo de compilación, al igual lenguajes con tipos estáticos hacen.

C # es un lenguaje escrito-estática, no toda su comprobación de tipos en tiempo de compilación. La verificación de tipos no es un "valor añadido" que es una característica integral. C # siempre ha tenido la capacidad de tarde-se unen mediante la reflexión y la función está cada vez mejor con la nueva próxima dinámica de palabras clave.

Sin embargo, si se utiliza cualquiera de las funciones de unión a finales de los años que C # tiene, no se obtiene ningún tipo de comprobación.

Otros consejos

No estoy 100% claro en lo que el código AS3 está haciendo - pero parece que se quiere definir una interfaz común (en un archivo independiente DLL) que su ensamblado externo puede poner en práctica - y simplemente echarlo cuando se crea la objeto:

Type type = loadedAssembly.GetType(fullyQualifiedName);
IMyInterface obj = (IMyInterface)Activator.CreateInstance(type):

Ahora puede utilizar los métodos definidos en obj fácilmente.

Alternativamente, en C # 4.0 la palabra clave dynamic proporciona pato-escribir.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top