Вот конкретный пример того, что я хочу сделать.
Рассмотрим функцию string.Join
. Pre -.NET 4.0, было только две перегрузки, для которых требовался параметр string[]
.
Начиная с .NET 4.0, появляются новые перегрузки с использованием более гибких типов параметров, включая IEnumerable<string>
.
У меня есть библиотека, которая включает в себя функцию Join
, которая действительно выполняет функцию .NET 4.0 string.Join
. Мне просто интересно, могу ли я реализовать эту функцию в зависимости от целевой платформы .NET. Если 4.0, он может просто вызвать string.Join
внутренне. Если 3.5 или старше, он может назвать свою внутреннюю реализацию.
- Имеет ли смысл эта идея?
- Если это имеет смысл, какой самый логичный способ сделать это? Я предполагаю, что я просто предполагаю, что директива препроцессора будет иметь наибольший смысл, поскольку вызов
string.Join
с параметромIEnumerable<string>
даже не будет компилироваться при таргетинге на версию .NET старше 4.0; поэтому любой подход, который я использую, должен был состояться до компиляции. (Проверка свойстваEnvironment.Version
во время выполнения, например, не будет работать.)