Deutsch
Germany.ruФорумы → Архив Досок→ Программирование

Extend sealed class. Wrapper class? Attached property?

216  
  moose старожил24.08.18 10:59
NEW 24.08.18 10:59 

вот возникла необходимость такое сделать. можно, конечно, обойти "некрасиво и неудобно", но не хочется.

есть такой класс, нужно запомнить (где-то внутри него. снаружи - не проблема, но это не то), с какими параметрами он создавался, и при необходимости изменять его родные properties, исходя из начальных параметров. например, создали ClassA ca = new ClassA (10); а потом нам нужно будет, чтобы это свойство можно было установить на какую-то долю от изначального: 0.8, потом 04, ... . для этого нам нужно где-то помнить это исходное значение. как я понимаю, Attached property такого сделать не позволит, т.к. получает готовй объект, и если в нем ничего нет, то и делов нет. создавать wrapper - нужно выносить наружу весь интерфейс (а он немаленький). самое удобное было бы - derive от этого класса новый, и там добавить переменную. но создатель решил, что низзя, потому что это испортит его перфомэнс : (

в общем, есть какие-нибудь идеи, как "прицепить" к ненаследуемому, "запечатанному" классу какие-то дополнительные переменные? можно, конечно, попробовать найти у него в запасе какие-то неиспользуемые уже существующие, но это - очень плохо.

#1 
  moose старожил24.08.18 18:19
24.08.18 18:19 
в ответ moose 24.08.18 10:59

нашел. это возможно сделать с помощью такой штуки как ConditionalWeakTable. мне еще нужно до конца разобраться, что это точно такое, и как оно внутри устроено, но пример сработал именно так, как мне вроде бы надо, но за такое стрелять надо (на первый взгляд).

#2 
AlexNek патриот24.08.18 20:43
AlexNek
NEW 24.08.18 20:43 
в ответ moose 24.08.18 18:19

А что мешает сделать Wrapper class?

#3 
  moose старожил24.08.18 21:12
NEW 24.08.18 21:12 
в ответ AlexNek 24.08.18 20:43

см. пост №1 : )

#4 
AlexNek патриот24.08.18 21:42
AlexNek
NEW 24.08.18 21:42 
в ответ moose 24.08.18 21:12

>как "прицепить" к ненаследуемому, "запечатанному" классу какие-то дополнительные переменные?

Вижу только хотелки, но не нахожу ответа - нафига?


#5 
  moose старожил25.08.18 09:58
NEW 25.08.18 09:58 
в ответ AlexNek 24.08.18 21:42, Последний раз изменено 25.08.18 09:59 (moose)

а вам нафига это знать? какая вам разница? это как останавливаешь человека дорогу к вокзалу спросить, а он начинает спрашивать, куда мне ехать, и нужно ли ехать вообще.

#6 
AlexNek патриот25.08.18 10:58
AlexNek
NEW 25.08.18 10:58 
в ответ moose 25.08.18 09:58, Последний раз изменено 25.08.18 11:08 (AlexNek)

Очень просто. Часто ищешь решение, потом подискутируешь с коллегами, которые рекомендуют совершенно другое, что совсем не подходит. А после переосмысливаешь и находишь более лучшее решение.

Так что только из-за того, что бы помочь взлянуть на проблему с другой стороны.

Также часто, просто попытка более подробного рассказа о проблеме помогает переосмыслить проблему.

Но если - это Вас нервирует, тогда сорри.

#7