public IElementoConvertido Converter(IElementoEntradaConversao entradaConversao)
        {
            ConversorMedidasDeComprimentoEntrada entradaConvertida = ValidarEObterEntrada(entradaConversao);

            string descricao = ObterDescricaoConversao(entradaConvertida);
            var    valor     = entradaConvertida.Valor * Math.Pow(10, entradaConvertida.De - entradaConvertida.Para);

            return(new ConversorMedidasDeComprimentoSaida(valor, descricao));
        }
        private static ConversorMedidasDeComprimentoEntrada ValidarEObterEntrada(IElementoEntradaConversao entradaConversao)
        {
            var valores = Enum.GetValues(typeof(TipoMedida)).Cast <TipoMedida>();

            if (!(entradaConversao is ConversorMedidasDeComprimentoEntrada entradaConvertida) ||
                !valores.Contains(entradaConvertida.De) ||
                !valores.Contains(entradaConvertida.Para))
            {
                throw new ArgumentException("Entrada não é válida para o método");
            }

            return(entradaConvertida);
        }