Как разделить переопределенный метод на несколько файлов? - PullRequest
0 голосов
/ 07 октября 2019

Мой вопрос заключается в том, как разделить на несколько файлов метод, содержащий override?

Я понимаю, что это невозможно с partial.

В моем коде яслишком много строк в этом методе. Я кодирую на платформе QuantConnect, которая ограничивает размер одного файла, и достигаю этого предела.

public partial class TestAlgo : QCAlgorithm
{
    public override void OnData(Slice slice) // Name OnData can't be modified.  
    {
    Indices:
        {
            //First Indices
        }

        {
            //Second Indices
        }
        ...
    }
}

Ответы [ 2 ]

3 голосов
/ 07 октября 2019

К сожалению, это невозможно. Вам следует провести рефакторинг вашего кода, чтобы вместо этого разделить ваш метод на несколько методов, и тогда вы могли бы использовать partial, хотя я все еще не уверен, почему вы захотите сделать это, а не рефакторизовать сложный код на несколько классов.

0 голосов
/ 07 октября 2019

В документации сказано :

Частичные методы неявно являются частными, и поэтому они не могут быть виртуальными.

ЕщеДело в том, что даже при использовании не виртуальных методов partial не позволяет разделить тело тела на несколько файлов. Это просто способ позволить одному файлу объявлять метод, а другой - предоставлять реализацию.

Итак, нам следует сосредоточиться на этой части вашего вопроса, а не на XY Problem you 'я спросил о:

У меня слишком много строк в этом методе. Я пишу код на платформе QuantConnect, которая ограничивает размер одного файла, и достигаю этого предела.

Каким бы ни был предел размера файла, я бы предположил, что это достаточно щедрый предел. Если вы достигли этого предела в результате использования одного метода, тогда у вас есть way слишком много кода в этом методе.

Существует множество рекомендаций относительно количества строк кода. метод должен иметь. Они довольно субъективны по своей природе. Люди спорят, будь то «один экран» или «два экрана» или что-то еще. Но можно с уверенностью сказать, что вы вышли далеко за пределы этого.

Ваш метод действительно должен быть реорганизован в более мелкие части. Вероятно, в меньшие классов . Как именно это сделать, здесь нельзя ответить, потому что вы не предоставили этот контекст. Но это нужно сделать.

...