Métodos de simplificação de árvores If-else aninhadas feias em c #

Às vezes, estou escrevendo instruções if-else no C # 3.5; Estou ciente de algumas abordagens diferentes para simplificar isso com o desenvolvimento orientado por tabela, hierarquia de classes, métodos anônimos e um pouco mais. O problema é que as alternativas ainda são menos difundidas do que as tradicionais declarações if-else, porque não há nenhuma convenção para isso.

Qual profundidade de if-else aninhada é normal para o C # 3.5? Quais métodos você espera ver em vez de aninhado if-else o primeiro? o segundo?

se eu tiver dez parâmetros de entrada com 3 estados em cada, eu deveria mapear funções para a combinação de cada estado de cada parâmetro (muito menos, porque nem todos os estados são válidos, mas às vezes ainda muito). Eu posso expressar esses estados como uma chave hashtable e um manipulador (lambda) que será chamado se a chave corresponder.

Ainda é uma mistura de desenvolvimento baseado em dados e orientado a tabelas. idéias e correspondência de padrões.

O que eu estou procurando é estender para C # tais abordagens como esta para scripting (c # 3.5 é bastante como script)http://blogs.msdn.com/ericlippert/archive/2004/02/24/79292.aspx