.NET メソッドの string 引数に null を渡す

PowerShell は $null を勝手に "" に変換して、.NET メソッドの string 引数に渡すというお節介をしてくれるので、メソッドの仕様によっては困ったことになります.
PowerShell 3 からは、そのような場合には [System.Management.Automation.Language.NullString]::Value を指定すればよくなりました.
そこで、PowerShell 2 用に同等の機能を提供するコードを書いたのが以下です.

PS> Add-Type -TypeDefinition @"
>> namespace System.Management.Automation.Language
>> {
>>     public sealed class NullString
>>     {
>>         private static volatile NullString instance;
>>         private static object syncRoot = new object();
>>
>>         private NullString() { }
>>
>>         public static NullString Value
>>         {
>>             get
>>             {
>>                 if (instance == null)
>>                 {
>>                     lock (syncRoot)
>>                     {
>>                         if (instance == null)
>>                             instance = new NullString();
>>                     }
>>                 }
>>                 return instance;
>>             }
>>         }
>>
>>         public override string ToString()
>>         {
>>             return null;
>>         }
>>     }
>> }
>> "@
>>
PS> [string][System.Management.Automation.Language.NullString]::Value -eq $null
True