title: When passing null to Interop method it throws "Generic types cannot be marshaled." exception
body: <p>I'm working with a C++ dll that is imported like this:</p>
  
  <pre><code>    [DllImport("Bank.dll"]
      static extern int GetDevice(byte versionCode, byte deviceAddress);
  </code></pre>
  
  <p>I can successfully access this method with not null arguments like this:</p>
  
  <pre><code>    GetDevice(0, 3);
  </code></pre>
  
  <p>But calling this method with null arguments like this:</p>
  
  <pre><code>    [DllImport("Bank.dll"]
      static extern int GetDevice(byte versionCode, Nullable&lt;byte&gt; deviceAddress);
      GetDevice(0, null);
  </code></pre>
  
  <p>Gives the following runtime error:</p>
  
  <p><em>An unhandled exception of type 'System.Runtime.InteropServices.MarshalDirectiveException' occurred.
  Additional information: Cannot marshal 'parameter #2': Generic types cannot be marshaled.</em></p>
  
  <p>How do I successfully pass null arguments to this method?</p>