title: Why does the c# compiler create a PrivateImplementationDetails from this code?
body: <p>I've discovered that the following code:</p>
  
  <pre><code>public static class MimeHelper
      {
          public static string GetMimeType(string strFileName)
          {
              string retval;
              switch (System.IO.Path.GetExtension(strFileName).ToLower())
              {
                  case ".3dm": retval = "x-world/x-3dmf"; break;
                  case ".3dmf": retval = "x-world/x-3dmf"; break;
                  case ".a": retval = "application/octet-stream"; break;
                  // etc...
                  default: retval = "application/octet-stream"; break;
              }
              return retval;
          } 
      }
  </code></pre>
  
  <p>causes the compiler to create this namespaceless, internal class (copied from Reflector):</p>
  
  <pre><code>&lt;PrivateImplementationDetails&gt;{621DEE27-4B15-4773-9203-D6658527CF2B}
      - $$method0x60000b0-1 : Dictionary&lt;String, Int32&gt;
      - Used By: MimeHelper.GetMimeType(String) : String
  </code></pre>
  
  <p>Why is that?
  How would I change the above code so it doesn't happen (just out of interest)</p>
  
  <p>Thanks</p>
  
  <p>Andrew</p>