Как добавить основные свойства к чему-то вроде класса Image? - PullRequest
2 голосов
/ 07 февраля 2012

Я хочу добавить несколько основных свойств к изображению.Обычно я делаю это, делая

public class ExtendedImage: Image
{
}

Но, конечно, это не разрешено, потому что оно запечатано.

Какие еще способы я могу сделать?Причина, по которой я хочу расширить Image, заключается в том, что я стремлюсь динамически создавать и уничтожать объекты, которые перетаскиваются вокруг приложения.Поэтому я хочу добавить обработчики манипуляций и жесты, а также добавить и удалить объект из различных экранных объектов.

Я не верю, что могу внедрить экземпляр Image в мой базовый класс,потому что тогда данные и изображение будут отделены, когда я попытаюсь, чтобы мои динамически созданные изображения реагировали на различные события манипуляции и т. д. (В зависимости от местоположения, в котором изображение размещено на главном холсте, мне нужно, чтобы оно имело другую функциональность.

Любые советы по этому вопросу с благодарностью.

1 Ответ

3 голосов
/ 07 февраля 2012

Вы можете использовать свойство Tag, чтобы связать экземпляры и получить желаемое поведение.Что-то вроде:

public class ExtendedImageController
{
    // add methods and properties as necessary
}

// client code
var img = new Image(); // ...
img.Tag = new ExtendedImageController(img); // with reference to image

// in some event handler:
var ctrl = (ExtendedImageController)img.Tag;
ctrl.DoCleanupThings(); 
// ...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...