Здравствуйте, Codealot, Вы писали:
C>Какая-то очень мутная фича. Решение крайне узкой задачи, которую можно решить другими методами. C>Или я то-то упускаю?
Вы ее просто не умеете готовить, в partial можно абсолютно просто всунуть любой генереный код, а смысловой оставить, при этом снаружи класс будет выглядеть как обычно.
Наследование тут вообще неуместно в принципе, т.к. потомков может быть в принципе много
Но вся нагрузка ключевого слова partial склеить два файла.
MS это использовал как в вин формах и было очень удобно, так по моему и в WPF, можно наверное DTO, протобафа нагенерить ну и прочее.
Здравствуйте, Codealot, Вы писали:
C>Твоя незамутненная гордость тривиальными знаниями.
Ты на протяжении всего топика спрашиваешь "нафига?". Вариант с автогенерацией тебя не удовлетворил, я предложил другое применение.
Причем тут моя гордость и мои знания я хз
Здравствуйте, rFLY, Вы писали:
FLY>Ты на протяжении всего топика спрашиваешь "нафига?". Вариант с автогенерацией тебя не удовлетворил, я предложил другое применение. FLY>Причем тут моя гордость и мои знания я хз
Переформулирую: нафига это было нужно на уровне языка, а не просто библиотеки? Что там были за нерешаемые проблемы?
Ну и заодно другие сообщения почитай.
Здравствуйте, Codealot, Вы писали:
C>Переформулирую: нафига это было нужно на уровне языка, а не просто библиотеки?
Каким образом ты это на уровне библиотеки собрался решать?
C>Что там были за нерешаемые проблемы?
А какие проблемы решает var или оператор +=? Зачем его ввели, когда можно написать a = a + b?
C>Ну и заодно другие сообщения почитай.
Читал, но так и не понял причину твоего хейта к этим методам.
Здравствуйте, Codealot, Вы писали:
C>Здравствуйте, RushDevion, Вы писали:
RD>>Ну а зачем заводить лишний уровень абстракции, если можно без него обойтись?
C>Пц. А это ничего, что ради этого бзика пришлось заводить целую новую фичу языка, которая вероятно будет нужна 0.0001% рарзработчиков?
Когда мы переделылавали UI, нам майковские советчики посоветовали WPF с модной тогда аритектурой MVC. Дали курс, и, вместе с нами, где-то полгода делали каркас нашей непростой системы с кучей паармеров и сценариев использования.
Controller, втолне ожидаемо превратился в God Object, который эти соватчики нам разбросали в partial class не только по разным файлам, но даже по поддиректориям, с иерархией и именами, соответствующим каким — либо сценариям.
Это потом уже все признали какой это отстой и все ринулись всё переделывать на MVVM. Но GodController живёт, и умереть у него не выйдет.
Здравствуйте, Codealot, Вы писали:
C>Какая-то очень мутная фича. Решение крайне узкой задачи, которую можно решить другими методами. C>Или я то-то упускаю?
Здравствуйте, Codealot, Вы писали:
RD>>Ну а зачем заводить лишний уровень абстракции, если можно без него обойтись?
C>Пц. А это ничего, что ради этого бзика пришлось заводить целую новую фичу языка, которая вероятно будет нужна 0.0001% рарзработчиков?
Ты видишь суслика — нет. А он есть. Сейчас в связи с Native AOT Source Generator прикручивают везде где нужно изменять поведение классов на этапе компиляции.
Здравствуйте, RushDevion, Вы писали:
RD>А partial methods, имхо, запилили чисто за компанию. Типа, а чё прикольно и сделать несложно. А давайте прикрутим? А давайте!
Хотя, больше похоже, что кто-то сделал эту фичу чисто под себя. Под свою задачу и религиозные бзики.
Здравствуйте, Serginio1, Вы писали:
S> Ты видишь суслика — нет. А он есть. Сейчас в связи с Native AOT Source Generator прикручивают везде где нужно изменять поведение классов на этапе компиляции.
Здравствуйте, Serginio1, Вы писали:
S>Это фича нужна прежде всего для SourceGenerators.
Вполне очевидно, что оно было сделано для кодогенерации.
Тот же вопрос, что и раньше — что мешало использовать для решения этой задачи существующие средства языка?
S>> Ты видишь суслика — нет. А он есть. Сейчас в связи с Native AOT Source Generator прикручивают везде где нужно изменять поведение классов на этапе компиляции.
C>И где там хоть одно упоминание partial methods?
Здравствуйте, Codealot, Вы писали:
S>>Это фича нужна прежде всего для SourceGenerators.
C>Вполне очевидно, что оно было сделано для кодогенерации. C>Тот же вопрос, что и раньше — что мешало использовать для решения этой задачи существующие средства языка?
Ну единственное решение это абстрактный класс.
Но иногда проще вместо генерации наследника, проще использовать существующий класс, а специализацию уже делать при компиляции.
По сути это аналог шаблонов С++, но с интеллисенсе и статической типизацией.
и солнце б утром не вставало, когда бы не было меня
Вопрос, а как определяется порядок компиляции partial методов? Из какого partial метода код
раньше\позже? Я это понимаю так, что в конце все partial методы превращаются в один метод, не partial.
Как это происходит?
ЗЫ: Про partial классы безусловно знаю, ибо долго работал с winforms, а вот про методы ничего не знаю,
не доводилось применять.
S>Вопрос, а как определяется порядок компиляции partial методов? Из какого partial метода код S>раньше\позже? Я это понимаю так, что в конце все partial методы превращаются в один метод, не partial.
Если я правильно понял вопрос, то речь о чем-то таком?
Это не скомпилируется. Будет ошибка: "A partial method may not have multiple defining declarations"
S>Как это происходит?
Очень просто. Сводим все partial-файлы для типа в один, заменяя partial definition на partial declaration.
И, кстати, в отличие от virtual/override, partial работает только в рамках текущей сборки (текущего проекта).