Posso tornar uma diretiva de pré-processador dependente da versão do .NET framework?

Aqui está um exemplo concreto do que eu quero fazer.

Considere ostring.Join função. Antes do .NET 4.0, havia apenas duas sobrecargas, as quais exigiam umastring[] parâmetro.

A partir do .NET 4.0, há novas sobrecargas que exigem tipos de parâmetros mais flexíveis, incluindoIEnumerable<string>.

Eu tenho uma biblioteca que inclui umJoin função que faz essencialmente o que o .NET 4.0string.Join função faz. Eu queria saber se eu poderia tornar a implementação dessa função dependente do framework .NET que estava sendo direcionado. Se 4.0, poderia simplesmente chamarstring.Join internamente. Se 3.5 ou mais antigo, poderia chamar sua própria implementação interna.

Essa ideia faz sentido?Se faz sentido, qual é a maneira mais lógica de fazer isso? Acho que estou assumindo que uma diretiva de pré-processador faria mais sentido, uma vez que uma chamada parastring.Join com umIEnumerable<string> parâmetro nem vaicompilar ao direcionar uma versão .NET anterior a 4.0; portanto, qualquer abordagem que eu use teria que ocorrer antes da compilação. (Verificando oEnvironment.Version propriedade em tempo de execução, por exemplo, não funcionaria.)

questionAnswers(3)

yourAnswerToTheQuestion