Задача: есть метод, в глубине которого показывается окошко, которое хочется уметь центрировать двумя способами - относительно заданной точки или заданного контрола.
Ага. Это лучший вариант. Но сгодится только когда из объектов вытаскивается общая часть. Если бы у FrameworkElement не было GetCenter, (а его кстати и правда нет =))... Но в новом шарпе придумали Extension Methods, они решают эту проблему.
Я тут кстати в фоне думаю как прикрутить банчи к редакторам, ибо уже было несколько юз-кейсов =) Беда в том что хочется чтобы банчами были все объекты, а доступа к реализации микрософтовых классов, понятно, нет. Да и мультинаследование, опять же... Пока придумалась фабрика в виде глобального синглтона, которая живёт сбоку и хранит в себе мапину <объект, коллекция_запчастей>. Все операции с запчастями - через неё... Но тут ряд проблем - например, при удалении обжа извне без явного удаления из фабрики он будет залипать в этой мапине и жрать память...
Comments 4
public void DoSomewhingAndShowWindow( ..., Point originPoint )
Point FrameworkElement::GetCenter()
FrameworkElement element;
DoSomewhingAndShowWindow( ..., element.GetCenter() )
Reply
Но сгодится только когда из объектов вытаскивается общая часть.
Если бы у FrameworkElement не было GetCenter, (а его кстати и правда нет =))... Но в новом шарпе придумали Extension Methods, они решают эту проблему.
Я тут кстати в фоне думаю как прикрутить банчи к редакторам, ибо уже было несколько юз-кейсов =)
Беда в том что хочется чтобы банчами были все объекты, а доступа к реализации микрософтовых классов, понятно, нет. Да и мультинаследование, опять же...
Пока придумалась фабрика в виде глобального синглтона, которая живёт сбоку и хранит в себе мапину <объект, коллекция_запчастей>. Все операции с запчастями - через неё...
Но тут ряд проблем - например, при удалении обжа извне без явного удаления из фабрики он будет залипать в этой мапине и жрать память...
Reply
Внешняя фабрика - да, чревата утечками. У нас мапина частей лежит в самом объекте.
Reply
Reply
Leave a comment