programación dinámica. neto
Public static void Main() {.
dynamic d = getdynamic object();
d.my método(22); //Llamada al método
d.a = d.B; /p>
d["one"] = d["two"]; //Asignación del indexador
int I = d 100; //Llamada del operador
String s = d(1, 2); //Delegar llamada
}
Al igual que un objeto puede representar cualquier tipo, la dinámica toma decisiones de tipo en tiempo de ejecución, llamadas a métodos, acceso a propiedades y delegar. Las llamadas se pueden programar dinámicamente. Al mismo tiempo, las características dinámicas también se reflejan en la construcción de un objeto dinámico. El tipo de interfaz IDynamicObject se implementa en C# 4.0, que puede definir completamente el significado de las operaciones dinámicas. Las operaciones retrasadas del compilador estático se completan mediante. Compilador de C# como componente de tiempo de ejecución, por ejemplo:
Dynamic d = new Foo();
String s; , null);
Durante el proceso de ejecución específico, el enlazador de tiempo de ejecución de C# obtiene el tipo real Foo de D a través de la reflexión basada en la información del tiempo de ejecución, y luego realiza la búsqueda de métodos y el análisis de sobrecarga en el método MyMethod en el tipo Foo y ejecuta la llamada. Ese es el secreto detrás de las llamadas dinámicas: el DLR. NET 4.0, presentaremos el importante componente subyacente DLR (Dynamic Language Runtime). Además del soporte básico para la búsqueda dinámica, el DLR también servirá como infraestructura para proporcionar un mecanismo de interoperabilidad unificado para lenguajes dinámicos como IronRuby y IronPython. En resumen, la programación dinámica traerá grandes cambios a C# en los siguientes aspectos:
La programación de Office interactúa con otros COM.
Soporte de lenguaje dinámico, consumir los tipos de lenguaje dinámico de IronRuby en C# no será difícil y podrá experimentar características de lenguaje dinámico a la vuelta de la esquina.
Soporte de reflexión mejorado.
Tomando como ejemplo la llamada a IronRython, solo necesitamos presentar Ironpython. DLL, IronPython. módulo. DLL y Microsoft.Scripting.dll, luego podemos manipular la información de tipo del lenguaje dinámico creando un entorno ScriptRuntime HostingIronPython en C#.
ScriptRuntime py = Python. crear tiempo de ejecución();
Dinámico mypy = py. UseFile("miarchivo.py");
Consola. WriteLine(mypy.my método("Hello"));
Aunque a juzgar por los datos técnicos y la demostración de CTP proporcionada por Microsoft, la búsqueda dinámica es más o menos problemática, hoy no podemos evitarlo y aceptarlo. protagonista del futuro, porque creo firmemente que el mañana será mejor.