Me han cargado con el uso de una biblioteca interna de acceso a datos que efectivamente pasa XML a un procedimiento almacenado, que devuelve XML. No hay nada que pueda hacer sobre esto. Traté de aprobar ActiveRecord, pero mi solicitud fue rechazada. Sin embargo, usando el excelente código provisto en http://blog.bodurov.com/Post.aspx?postID=27, agregué un método de extensión a IEnumerable que convierte los pares clave-valor que yo hago del XML irregular volviendo a objetos muy tipados, ¡completos con nombres de propiedad!¿Cómo adjunto un método a un tipo de C# creado dinámicamente en tiempo de ejecución?
Este:
dict["keyName1"]
convierte
MyObject.keyName1
Ahora, la interfaz es compatible con el enlace de datos! ¡Muy genial! Sin embargo, me gustaría dar un paso más. Quiero que los objetos emitidos también tengan los métodos Save(), de modo que pueda simular el patrón ActiveRecord y proporcionar a mis chicos de la web una capa de objetos intuitiva para utilizar desde ASP.net.
¿Cómo escribo un método en Visual Studio, en código fuente, y lo adjunto en tiempo de ejecución a los objetos emitidos? No estoy interesado en (o calificado para) ensamblaje de escritura o IL. Me gustaría hacer esto en C#. Esta es mi primera pregunta de StackOverflow y estoy publicando esto con el IE6 requerido por la compañía, así que sean amables.
"si la estructura XML será el mismo cada vez que el SP ejecuta" me sale BRD 1245 RFW 3456 InstanceName> Nombre del Proyecto! etc con diferentes atributos cada vez :( –
Sí, pero estoy seguro de que hay una lista de atributos que están disponibles para elegir. Pon todos esos atributos en la clase como campos Nullable (si son tipos de valor) y poblar solo los que recibe. No creo que necesite usar alguna solución loca para construir un tipo dinámicamente ... – BFree
El XML se genera dinámicamente y no quiero tener que mantener una biblioteca de clases concretas para cada permutación –