Ecco un esempio concreto di ciò che voglio fare.Posso rendere una direttiva per il preprocessore dipendente dalla versione del framework .NET?
Considerare la funzione string.Join
. Pre-.NET 4.0, c'erano solo due sovraccarichi, entrambi richiedevano un parametro string[]
.
A partire da. NET 4.0, ci sono nuovi sovraccarichi che richiedono tipi di parametri più flessibili, incluso IEnumerable<string>
.
Ho una libreria che include una funzione Join
che fa essenzialmente ciò che fa la funzione .NET 4.0 string.Join
. Mi stavo chiedendo se avrei potuto rendere l'implementazione di questa funzione dipendente dal framework .NET preso di mira. Se 4.0, potrebbe semplicemente chiamare string.Join
internamente. Se 3.5 o più vecchio, potrebbe chiamare la sua propria implementazione interna.
- Questa idea ha senso?
- Se ha senso, qual è il modo più logico per farlo? Suppongo che stia solo partendo dal presupposto che una direttiva per il preprocessore sarebbe più sensata, dal momento che una chiamata a
string.Join
con un parametroIEnumerable<string>
non comporterà nemmeno compilando per il targeting di una versione .NET precedente alla 4.0; quindi qualunque approccio io usi dovrebbe aver luogo prima della compilazione. (Controllo della proprietàEnvironment.Version
in fase di esecuzione, ad esempio, non avrebbe funzionato.)
Vedi anche http://stackoverflow.com/questions/3436526/detect-target-framework-version-at-compile-time – Maslow