Код Boilerplate с переменной с пользовательским {get; установлен; }

1

У меня такой код в User Control. Идея заключается в том, что она работает как обычная переменная, но когда она установлена, она заставит элемент управления перерисовать.

private int _imageHeight;

public int ImageHeight
{
    get { return _imageHeight; }
    set
    {
        _imageHeight = value;
        Invalidate();
    }
}

Я понимаю { get; set; } { get; set; } { get; set; } дает мне весь код, который я только что написал, кроме части Invalidate(). Есть ли какой-то способ, которым мне не нужно писать код объявления declare и getter/setter, но все же получить часть Invalidate()?

  • 0
    Почему бы не вызвать invalidate в том же члене, где сделан вызов сеттеру?
  • 1
    Цель состоит в том, чтобы УСТРАНИТЬ шаблонный код, а не делать их больше лол.
Показать ещё 3 комментария
Теги:
getter-setter
boilerplate

1 ответ

2

Концепция, которую вы ищете, называется аспектно-ориентированным программированием. С аспектно-ориентированным программированием вы можете избавиться от Boilerplate и объявить аспект (как атрибут), который делает Invalidate после вызова сеттера. (Может быть сделано и на уровне класса).

https://www.postsharp.net/ разрешает АОП в С# Я пытался попробовать это один раз, к сожалению, остальная часть нашей команды не считает, что этот тип шаблона является проблемой. Поэтому я снова бросил его, но он может делать именно то, что вы хотите.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню