ユーザーがアプリケーションを実行するための C# スクリプトを記述できる機能を追加しました。このスクリプトは実行時にコンパイルおよび実行されます。スクリプトは公開されている API にアクセスでき、CSharpCodeProvider によってコンパイル/実行されます。
オプションの引数を使用してメソッドを呼び出すと、実行時にコンパイルされたコードに問題があることがわかりました。
public void BlackmailColonelMustard(int amount, string myAlias, bool tellHisWifeAnyway = true)
実行時にコンパイルされたスクリプトがBlackmailColonelMustard(10000, "Mr Boddy")を呼び出す場合、コンパイラは、3 番目のパラメーターの既定値を認識するのではなく、引数が 2 つしかないオーバーロードされたメソッドはないと警告します。
もちろん、コンパイル済みコードから呼び出すと正常に動作します。私が間違っていることを知っている人はいますか?
VS2010 (.NET 4 より前のバージョンでも) はオプションのパラメーターを使用するコードをコンパイルするのに十分なほどスマートですが、.NET 3.5 ランタイムはそのトリックをまだ学習していないためですか?