Hier ist ein konkretes Beispiel für das, was ich tun möchte.Kann ich eine Präprozessor-Direktive von der .NET-Framework-Version abhängig machen?
Betrachten Sie die string.Join
Funktion. Pre-.NET 4.0 gab es nur zwei Überladungen, die beide einen string[]
Parameter benötigten.
Ab .NET 4.0 gibt es neue Überladungen, die flexiblere Parametertypen verwenden, einschließlich IEnumerable<string>
.
Ich habe eine Bibliothek, die eine Join
-Funktion enthält, die wesentlich tut, was die .NET 4.0 string.Join
Funktion tut. Ich habe mich nur gefragt, ob ich die Implementierung dieser Funktion abhängig machen könnte von dem .NET-Framework, auf das es abzielt. Wenn 4.0, könnte es einfach intern string.Join
aufrufen. Wenn 3.5 oder älter, könnte es seine eigene interne Implementierung aufrufen.
- Macht diese Idee Sinn?
- Wenn es sinnvoll ist, was ist der logischste Weg, es zu tun? Ich nehme an, ich nehme nur an, eine Präprozessordirektive wäre am sinnvollsten, da ein Aufruf an
string.Join
mit einemIEnumerable<string>
Parameter nicht einmal kompilieren beim Targeting einer .NET-Version älter als 4.0; Also muss jeder Ansatz, den ich verwende, vor der Kompilierung stattfinden. (Überprüfung derEnvironment.Version
Eigenschaft zur Laufzeit, zum Beispiel würde nicht funktionieren.)
Siehe auch http://stackoverflow.com/questions/3436526/detect-target-framework-version-at-compile-time – Maslow