Информация об изменениях

Сообщение Re[11]: partial methods от 16.11.2024 9:11

Изменено 18.11.2024 7:38 Pauel

Re[11]: partial methods
Здравствуйте, Codealot, Вы писали:

P>>Малеха пропустили, и ваш метод повис в воздухе.


C>Непонятно, что ты хотел сказать.


Вы предлагаете подробить класс на цепочку наследования, которую надо теперь мейнтейнить руками. Три файла — три класса. Ошибаетесь в имени, наследуете 3й от 1го и приплыли.

В случае с partial вы доопределяете метод ровно там, где это нужно. Эдакий плагин.

Теперь интереснее — покажите, как вы собираетесь ваш генеренный код инстанцировать из другого генеренного кода
Подробно — как генератор узнает, что через год вы допишете наследование и нужно будет инстанцировать тот а не этот.

В нашем случае все просто — new XxxComponent()
Или делаем метод-фабрику, который тоже partial.

В вашем случае надо городить огород — пилить целый слой поверх, все перенаследовать.
Re[11]: partial methods
Здравствуйте, Codealot, Вы писали:

P>>Малеха пропустили, и ваш метод повис в воздухе.


C>Непонятно, что ты хотел сказать.


Вы предлагаете подробить класс на цепочку наследования, которую надо теперь мейнтейнить руками. Три файла — три класса. Ошибаетесь в имени, наследуете 3й от 1го и приплыли.

В случае с partial вы доопределяете метод ровно там, где это нужно. Эдакий плагин.

Теперь интереснее — покажите, как вы собираетесь ваш генеренный код инстанцировать из другого генеренного кода
Подробно — как генератор узнает, что через год вы допишете наследование и нужно будет инстанцировать тот а не этот.

В нашем случае все просто — new XxxComponent()
Или делаем метод-фабрику, который тоже partial.

В вашем случае надо городить огород — пилить целый слой поверх, все перенаследовать.

Вот, минимум телодвижений
    partial void OnCreateProduct(ref Product product, string name);

    public Product CreateProduct(string name)
    {
        Product product = new Product(name);
        
        OnCreateProduct(ref product, name);
        
        return product;
    }

    ...

    partial void OnCreateProduct(ref Product product, string name)
    {
        product = new Product("a test");
    }