У меня есть требование в моем проекте добавить другое свойство в какой-то класс. Теперь я хочу избежать изменения класса, потому что я решил, что он не должен знать, что у него есть это свойство (это свойство имеет значение только в контексте этого проекта).Добавление свойства, не касаясь класса? (не наследование)
Как я думал, что для достижения этой цели была (Пожалуйста, критик, потому что я хочу знать, если есть более простые способы сделать это)
- Добавлением нового одноэлементного класса, который имеет соответствие между объектами моего класса и тип свойства, которое я хотел добавить
- добавление в этот класс метода расширения (свойство расширения?) для доступа к отображению и выборка свойства.
Есть ли более простая альтернатива? Это просто лишняя сложность? Может быть, мне нужно добавить новое свойство в мой класс?
Спасибо!
Как писал Дэн Брайант, это не редкость делать такое, и у него много хороших преимуществ. Я бы создал get-и set-ExtensionMethod для вашего типа (свойства расширения не существуют) и сохранить значения в статической хэш-таблице (Dictionary), где ваш объект является ключом для хеш-таблицы. Недостатком этого является то, что у вас нет свойств. Если вы хотите иметь это, вы должны принять другое решение (например, композит). – HCL