これが私がやりたいことの具体的な例です。
string.Join
関数を考えてみましょう。.NET 4.0 より前のバージョンでは、オーバーロードは 2 つしかなく、どちらもstring[]
パラメーターが必要でした。
.NET 4.0 の時点で、より柔軟なパラメーターの型を取る新しいオーバーロードがありますIEnumerable<string>
。
Join
基本的に.NET 4.0関数が行うことを行う関数を含むライブラリがありますstring.Join
。この関数の実装を、対象となる .NET フレームワークに依存させることができるかどうか疑問に思っていました。4.0 の場合は、単にstring.Join
内部的に呼び出すことができます。3.5 以前の場合は、独自の内部実装を呼び出すことができます。
- この考えは理にかなっていますか?
- それが理にかなっている場合、それを行うための最も論理的な方法は何ですか? 4.0 よりも古い .NET バージョンを対象とする場合
string.Join
、IEnumerable<string>
パラメーターを使用した への呼び出しはコンパイルさえされないため、プリプロセッサ ディレクティブが最も理にかなっていると想定しているだけだと思います。したがって、私が使用するアプローチは、コンパイルの前に行う必要があります。Environment.Version
(たとえば、実行時にプロパティをチェックしても機能しません。)