title: Running into System.MissingMethodException: Method Not Found with PrivateObject
body: <p>Basically, some of my tests are succeeding, some are failing. Per Mr. Skeet's excellent suggestion, I created a full code sample to confirm I'm not crazy. This is the code:</p>
  
  <pre><code>namespace ClassLibrary
  {
      using System;
  
      public class Manager
      {
          private int SampleMethod(int id)
          {
              return id;
          }
      }
  }
  </code></pre>
  
  <p>My test is:</p>
  
  <pre><code>namespace UnitTestProject
  {
      using System;
      using Microsoft.VisualStudio.TestTools.UnitTesting;
  
      [TestClass]
      public class UnitTest
      {
          [TestMethod]
          public void TestPasses()
          {
              var privateInfo = new PrivateObject(new ClassLibrary.Manager());
              var actual = privateInfo.Invoke("SampleMethod", 1);
          }
  
          [TestMethod]
          public void TestErrorsOut()
          {
              var privateInfo = new PrivateObject(new ClassLibrary.Manager());
              var actual = privateInfo.Invoke("SampleMethod", 0);
          }
  
          [TestMethod]
          public void TestWorksAsWell()
          {
              var privateInfo = new PrivateObject(new ClassLibrary.Manager());
              privateInfo.Invoke("SampleMethod", new object[] { 0 });
          }
  
          [TestMethod]
          public void TestAlsoErrorsOut()
          {
              var privateInfo = new PrivateObject(new ClassLibrary.Manager());
              var types = new Type[] { typeof(int) };
              var actual = privateInfo.Invoke("SampleMethod", types, 0);
          }
      }
  }
  </code></pre>
  
  <p>The first test (TestPasses()) works. </p>
  
  <p>The second test (TestErrorsOut()) fails with the following error:
  {"Method 'ClassLibrary.Manager.SampleMethod' not found."}</p>
  
  <p>The baffling thing is the error is consistent, but the actual test is almost identical. It makes no sense. I tried this on VS2012 RC and VS2010, with the same results. </p>
  
  <p>The only thing I can think of is "0" is getting cast as something besides int, which means it can't find the method signature of SampleMethod? I tried a third test to explicitly pass in the type I'm looking for (TestAlsoErrorsOut()), but that also errors out with the same error. </p>
  
  <p>Ideas? Thanks. </p>
  
  <p><strong>Edit to add</strong></p>
  
  <p>By using Ian's suggestion of using the obj[] instead of params obj[] overload, it works (test TestWorksAsWell()). And that explains why TestAlsoErrorsOut() fails, because I'm using params method, which wouldn't work with Type[]. So, this is fixed. But, why? Why will params obj[] work when passing a 1, but not a 0? </p>