Extend sealed class. Wrapper class? Attached property?
вот возникла необходимость такое сделать. можно, конечно, обойти "некрасиво и неудобно", но не хочется.
есть такой класс, нужно запомнить (где-то внутри него. снаружи - не проблема, но это не то), с какими параметрами он создавался, и при необходимости изменять его родные properties, исходя из начальных параметров. например, создали ClassA ca = new ClassA (10); а потом нам нужно будет, чтобы это свойство можно было установить на какую-то долю от изначального: 0.8, потом 04, ... . для этого нам нужно где-то помнить это исходное значение. как я понимаю, Attached property такого сделать не позволит, т.к. получает готовй объект, и если в нем ничего нет, то и делов нет. создавать wrapper - нужно выносить наружу весь интерфейс (а он немаленький). самое удобное было бы - derive от этого класса новый, и там добавить переменную. но создатель решил, что низзя, потому что это испортит его перфомэнс : (
в общем, есть какие-нибудь идеи, как "прицепить" к ненаследуемому, "запечатанному" классу какие-то дополнительные переменные? можно, конечно, попробовать найти у него в запасе какие-то неиспользуемые уже существующие, но это - очень плохо.
нашел. это возможно сделать с помощью такой штуки как ConditionalWeakTable. мне еще нужно до конца разобраться, что это точно такое, и как оно внутри устроено, но пример сработал именно так, как мне вроде бы надо, но за такое стрелять надо (на первый взгляд).
Очень просто. Часто ищешь решение, потом подискутируешь с коллегами, которые рекомендуют совершенно другое, что совсем не подходит. А после переосмысливаешь и находишь более лучшее решение.
Так что только из-за того, что бы помочь взлянуть на проблему с другой стороны.
Также часто, просто попытка более подробного рассказа о проблеме помогает переосмыслить проблему.
Но если - это Вас нервирует, тогда сорри.