Aquí hay un ejemplo concreto de lo que quiero hacer.¿Puedo hacer que una directiva de preprocesador dependa de la versión de .NET Framework?
Considere la función string.Join
. Pre.NET 4.0, solo había dos sobrecargas, y ambas requerían un parámetro string[]
.
A partir de .NET 4.0, hay nuevas sobrecargas que toman tipos de parámetros más flexibles, incluyendo IEnumerable<string>
.
Tengo una biblioteca que incluye una función Join
que hace esencialmente lo que hace la función .NET 4.0 string.Join
. Me preguntaba si podría hacer que la implementación de esta función dependa del framework .NET al que se apunta. Si es 4.0, simplemente puede llamar al string.Join
internamente. Si tiene 3.5 o más, podría llamar a su propia implementación interna.
- ¿Tiene sentido esta idea?
- Si tiene sentido, ¿cuál es la forma más lógica de hacerlo? Supongo que estoy asumiendo que una directiva de preprocesador tendría más sentido, ya que una llamada a
string.Join
con un parámetroIEnumerable<string>
ni compilará al apuntar a una versión .NET anterior a la 4.0; así que cualquier enfoque que use debería tener lugar antes de la compilación. (Comprobación de la propiedadEnvironment.Version
en tiempo de ejecución, por ejemplo, no funcionaría.)
Véase también http://stackoverflow.com/questions/3436526/detect-target-framework-version-at-compile-time – Maslow