Extension Everything. Зачем оно нужно?

159
08 апреля 2019, 10:30

Наткнулся на еще одно новшество новой редакции языка под названием Extension Everything (Имхо спорное).

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

Однако теперь, как я понимаю, позволяетется, расширять абсолютно все:

extension MyPersonExtension extends Person
{
    public int CountFingers()
    {
        this. // it call the current instance of Person
    }
}
extension MyPersonExtension extends Person
{
    public int NumberOfFingers()
    {
        get { ... }
    }
}
extension MyPersonExtension extends Person
{
    static int ... // You can add static things
}

Как видно в примере добавляются новые поля в класс.

Собственно, вопрос: Зачем это нужно, если в таком случае правильнее сделать наследование?

Если эта штука позволяет еще и запечатанные классы расширять, то это же противоречит инкапсуляции..

Answer 1

Зачем это нужно?

Это логичное продолжение подхода extension, позволяя описывать в расширениях не только методы, но и свойства, а так же статические поля.

Как и в случае с extensions сейчас - исходный класс НЕ меняется. Так что никаких проблем с инкапсуляцией нет, как их нет сейчас с использованием extensions.

Кроме того, в вопросе не упомянуто еще одна возможность: указывать что класс имплементирует нужный интерфейс

extension MyPersonExtension extends Person : IEmployee // The Person class implements now the IEmployee interface in your assembly
{
    [ ... ]
}
READ ALSO
Проигрывание списка воспроизведения HLS

Проигрывание списка воспроизведения HLS

Я пытаюсь написать программу, которая будет играть список воспроизведения HLSДля примера, имеется ссылка на интернет радио: https://digitacdn

244
Проблема с Dictionary

Проблема с Dictionary

Всем привет! При добавлении в Dictionary, некоторых данных p

153
Как автоматически подключать flash player в Chrome 71

Как автоматически подключать flash player в Chrome 71

Данный код не работает, может кто нибуть подскажет куда копать

154
Перемножение факториалов

Перемножение факториалов

Сейчас задачка попалась, не могу сообразить, как ее решить:

167