Eu uso um objeto anônimo para passar meus atributos Html para alguns métodos auxiliares. Se o consumidor não adicionou um atributo de ID, quero adicioná-lo ao meu método auxiliar.
Como posso adicionar um atributo a este objeto anônimo?
c#
reflection
anonymous-objects
Boris Callens
fonte
fonte
A seguinte classe de extensão fornecerá o que você precisa.
fonte
Presumo que você se refira a tipos anônimos aqui, por exemplo,
new { Name1=value1, Name2=value2}
etc. Em caso afirmativo, você está sem sorte - tipos anônimos são tipos normais por serem códigos fixos e compilados. Eles simplesmente são gerados automaticamente.O que você poderia fazer é escrever,
new { old.Name1, old.Name2, ID=myId }
mas não sei se é isso que você realmente quer. Mais alguns detalhes sobre a situação (incluindo exemplos de código) seriam ideais.Como alternativa, você pode criar um objeto recipiente que sempre tenha um ID e qualquer outro objeto que contenha o restante das propriedades.
fonte
Isso aceitaria o valor de id que a caixa de texto deveria ter e o rótulo deveria se referir. Se o consumidor agora não incluir a propriedade "id" em textBoxHtmlAttributes, o método criará um rótulo incorreto.
Posso verificar por meio de reflexão se esse atributo é adicionado ao objeto labelHtmlAttributes. Em caso afirmativo, desejo adicioná-lo ou criar um novo objeto anônimo que o tenha adicionado. Mas como não consigo criar um novo tipo anônimo percorrendo os atributos antigos e adicionando meu próprio atributo "id", estou meio preso.
Um contêiner com uma propriedade de ID fortemente tipada e, em seguida, uma propriedade de "atributos" digitada anônima exigiria reescritas de código que não pesam para o requisito de "adicionar um campo de id".
Espero que esta resposta seja compreensível. É o fim do dia, não consigo mais colocar meu cérebro em linha ..
fonte