Я использую анонимный объект для передачи моих атрибутов Html некоторым вспомогательным методам. Если потребитель не добавил атрибут ID, я хочу добавить его в свой вспомогательный метод.
Как я могу добавить атрибут к этому анонимному объекту?
c#
reflection
anonymous-objects
Борис Калленс
источник
источник
Следующий класс расширения даст вам то, что вам нужно.
источник
Я предполагаю, что вы имеете в виду здесь анонимные типы, например
new { Name1=value1, Name2=value2}
и т. Д. Если это так, вам не повезло - анонимные типы являются нормальными типами в том смысле, что они фиксированный, скомпилированный код. Они просто созданы автоматически.Вы могли бы написать,
new { old.Name1, old.Name2, ID=myId }
но я не знаю, действительно ли вы этого хотите. Еще несколько подробностей о ситуации (включая примеры кода) были бы идеальными.В качестве альтернативы вы можете создать объект-контейнер, у которого всегда будет идентификатор, и любой другой объект, содержащий остальные свойства.
источник
Это примет значение id, которое должно иметь текстовое поле, и на который должна ссылаться метка. Если потребитель теперь не включает свойство «id» в textBoxHtmlAttributes, метод создаст неправильную метку.
Я могу проверить через отражение, добавлен ли этот атрибут в объект labelHtmlAttributes. Если это так, я хочу добавить его или создать новый анонимный объект, в который он был добавлен. Но поскольку я не могу создать новый анонимный тип, пройдя по старым атрибутам и добавив свой собственный атрибут «id», я как бы застрял.
Контейнер со строго типизированным свойством идентификатора, а затем анонимно типизированным свойством «атрибутов» потребует перезаписи кода, которая не соответствует требованию «добавить поле идентификатора».
Надеюсь, этот ответ понятен. Конец дня, я больше не могу привести в порядок свои мозги ..
источник