C # - автоматически передавать вызов метода в метод объекта с той же сигнатурой - PullRequest
0 голосов
/ 21 октября 2018

Я хотел бы создать пользовательский Rectangle в C # WPF, но его невозможно унаследовать от Rectangle.Поэтому в основном я должен скопировать методы из Rectangle, которые мне нужны, и передать их в Rectangle -объект, который я держу в своем пользовательском Rectangle -классе, например:

private double _width;
public double Width
{
    get => _width;
    set
    {
        _width = value;
        _rectangle.Width = _width;
    }
}
private double _height;
public double Height
{
    get => _height;
    set
    {
        _height = value;
        _rectangle.Height = _height;
    }
}
private Brush _stroke;
public Brush Stroke
{
    get => _stroke;
    set
    {
        _stroke = value;
        _rectangle.Stroke = _stroke;
    }
}
private int _strokeThickness;
public int StrokeThickness
{
    get => _strokeThickness;
    set
    {
        _strokeThickness = value;
        _rectangle.StrokeThickness = _strokeThickness;
    }
}
private Brush _fill;
public Brush Fill
{
    get => _fill;
    set
    {
        _fill = value;
        _rectangle.Fill = _fill;
    }
}
private bool _focusable;
public bool Focusable
{
    get => _focusable;
    set
    {
        _focusable = value;
        _rectangle.Focusable = _focusable;
    }
}

Есть ли в C # .NET функция языка, которая делает это для меня, поэтому мне не нужно писать все вручную?

1 Ответ

0 голосов
/ 21 октября 2018

Нет на родном языке нет.Возможно, потому что это обычно не то, что вам нужно.

Запечатанные классы запечатаны с указанием причины.

В вашем примере я не вижу никаких добавленных свойств, поэтому, возможно, методы расширения - это путь?

Также я вижу, что у вас есть поле для каждого свойства и поле _rectangle.Зачем ты это делаешь.Вы можете просто вернуть _rectangle.width в геттер.

...