Estoy muy entusiasmado con las características dinámicas en C# (C#4 dynamic keyword - why not?), especialmente porque en ciertas partes de la Biblioteca de mi código uso mucha reflexión.¿La palabra clave "dinámica" de C# 4.0 hace que los genéricos sean redundantes?
Mi pregunta es doble:
1. ¿ "dinámico" reemplazar los genéricos, como en el caso de abajo? método
Generics:
public static void Do_Something_If_Object_Not_Null<SomeType>(SomeType ObjToTest) {
//test object is not null, regardless of its Type
if (!EqualityComparer<SomeType>.Default.Equals(ObjToTest, default(SomeType))) {
//do something
}
}
método dinámico (??):
public static void Do_Something_If_Object_Not_Null(dynamic ObjToTest) {
//test object is not null, regardless of its Type?? but how?
if (ObjToTest != null) {
//do something
}
}
2. hace "dinámico" ahora permitir métodos para volver Los tipos anónimos, como en el caso, por debajo ?:
public static List<dynamic> ReturnAnonymousType() {
return MyDataContext.SomeEntities.Entity.Select(e => e.Property1, e.Property2).ToList();
}
cool, cheers
EDIT:
haber pensado a través de mi pregunta un poco más, ya la luz de las respuestas, veo yo completamente en mal estado la principal pregunta genérica/dinámico. De hecho, son completamente diferentes. Así que sí, gracias por toda la información.
¿Qué pasa con el punto 2?
Otro uso sorprendentemente útil para la dinámica: interoperabilidad JSON en situaciones web RESTful, especialmente si el JSON en cuestión fluctúa mucho de llamada a llamada. Hay bibliotecas que serializarán y deserializarán JSON hacia/desde un objeto dinámico. – Randolpho