Usando o operador condicional (? :) para seleção de método em C # (3.0)?

Estou refatorando algum código.

No momento, existem muitos lugares com funções como esta:

string error;
if (a) {
   error = f1(a, long, parameter, list);
}
else {
   error = f2(the_same, long, parameter, list);
}

antes de refatorar f1 e f2 (que são grandes, mas fazem coisas semelhantes), gostaria de refatorar para:

string error = (a ? f1 : f2)(a, long, parameter, list);

Como se faria em C. (As assinaturas de função são idênticas)

Mas eu recebo um erro:

"Erro 13 O tipo de expressão condicional não pode ser determinado porque não há conversão implícita entre 'grupo de métodos' e 'grupo de métodos'"

Isso me permitiria reconhecer que as listas de parâmetros são idênticas pela refatoração inicial, fornecendo comportamento invariável, e também refatorar as chamadas em um único local, garantindo que durante todas essas refatorações diversas, nada seja quebrado à medida que altero a interface de chamada para o método .

Estou sentindo falta de algo pequeno que permita que uma sintaxe próxima disso funcione (em oposição a várias definições de tipo de delegado extra, etc.)?

Desculpe editar, mas na verdade existe um valor de retorno e, sim, infelizmente, é uma string. ;-(

No momento, estou decidindo por isso:

string error = a ? f1(a, long, parameter, list) : f2(a, long, parameter, list);

O problema é que a lista de parâmetros é realmente muito longa e será refatorada, e eu prefiro tê-los consolidados primeiro e lidar com erros do compilador à medida que os altero.

questionAnswers(7)

yourAnswerToTheQuestion