Resolvendo o problema da 'chamada de método virtual no construtor'

Eu estou fazendo um software em c #. Eu estou usando uma classe abstrataInstruction, que tem esses bits de código:

protected Instruction(InstructionSet instructionSet, ExpressionElement newArgument,
    bool newDoesUseArgument, int newDefaultArgument, int newCostInBytes, bool newDoesUseRealInstruction) {

    //Some stuff

    if (DoesUseRealInstruction) {
        //The warning appears here.
        RealInstruction = GetRealInstruction(instructionSet, Argument);
    }
}

e

public virtual Instruction GetRealInstruction(InstructionSet instructionSet, ExpressionElement argument) {
    throw new NotImplementedException("Real instruction not implemented. Instruction type: " + GetType());
}

Então Resharper me diz que na linha marcada eu estou 'chamando um método virtual no construtor' e que isso é ruim. Eu entendo a coisa sobre a ordem na qual os construtores são chamados. Todos os overrides doGetRealInstruction método se parece com isso:

public override Instruction GetRealInstruction(InstructionSet instructionSet, ExpressionElement argument) {
    return new GoInstruction(instructionSet, argument);
}

Então eles não dependem de nenhum dado da classe; eles apenas retornam algo que depende do tipo derivado. (então a ordem do construtor não os afeta).

Então, eu deveria ignorar isso? Eu prefiro que nao; então alguém poderia me mostrar como eu poderia evitar esse aviso?

Eu não posso usar os delegados com cuidado porque oGetRealInstruction método tem mais uma sobrecarga.

questionAnswers(5)

yourAnswerToTheQuestion