Utilizo un objeto anónimo para pasar mis atributos Html a algunos métodos auxiliares. Si el consumidor no agregó un atributo de ID, quiero agregarlo en mi método auxiliar.
¿Cómo puedo agregar un atributo a este objeto anónimo?
c#
reflection
anonymous-objects
Boris Callens
fuente
fuente
La siguiente clase de extensión le proporcionará lo que necesita.
fuente
Supongo que te refieres a tipos anónimos aquí, por ejemplo,
new { Name1=value1, Name2=value2}
etc. Si es así, no tienes suerte: los tipos anónimos son tipos normales en el sentido de que son código compilado y fijo. Simplemente resultan ser autogenerados.Lo que podrías hacer es escribir,
new { old.Name1, old.Name2, ID=myId }
pero no sé si eso es realmente lo que quieres. Algunos detalles más sobre la situación (incluidos ejemplos de código) serían ideales.Alternativamente, puede crear un objeto contenedor que siempre tenga un ID y cualquier otro objeto que contenga el resto de las propiedades.
fuente
Esto aceptaría el valor de identificación que debería tener el cuadro de texto y al que debería hacer referencia la etiqueta. Si el consumidor ahora no incluye la propiedad "id" en el textBoxHtmlAttributes, el método creará una etiqueta incorrecta.
Puedo verificar mediante la reflexión si este atributo se agrega en el objeto labelHtmlAttributes. Si es así, quiero agregarlo o crear un nuevo objeto anónimo que lo tenga agregado. Pero como no puedo crear un nuevo tipo anónimo recorriendo los atributos antiguos y agregando mi propio atributo "id", estoy un poco atascado.
Un contenedor con una propiedad de ID fuertemente tipada y luego una propiedad de "atributos" tipeada anónima requeriría reescrituras de código que no pesen para el requisito de "agregar un campo de identificación".
Espero que esta respuesta sea comprensible. Es el final del día, ya no puedo poner mi cerebro en línea ...
fuente