title: Activator failing to create an object instance, throwing MissingMethodException
body: <p>Some code:</p>
  
  <pre><code>BinaryReader reader;
  
  //...
  
  JournalEntry.Instantiate((JournalEntry.JournalEntryType)reader.ReadByte(), reader)
  </code></pre>
  
  <p>JournalEntry:</p>
  
  <pre><code>public enum JournalEntryType {
      Invalid,
      Tip,
      Death,
      Level,
      Friend
  }
  
  private readonly static Dictionary&lt;JournalEntryType, Type&gt; instantiationBindings = new Dictionary&lt;JournalEntryType, Type&gt;() {
      {JournalEntryType.Invalid, typeof(JournalEntryOther)},
      {JournalEntryType.Tip, typeof(JournalEntryTip)},
      {JournalEntryType.Death, typeof(JournalEntryOther)},
      {JournalEntryType.Level, typeof(JournalEntryOther)},
      {JournalEntryType.Friend, typeof(JournalEntryOther)}
  };
  
  internal JournalEntry(BinaryReader reader) {
      Read(reader);
  }
  
  internal static JournalEntry Instantiate(JournalEntryType type, BinaryReader reader) {
      return (JournalEntry)Activator.CreateInstance(instantiationBindings[type], reader);;
  }
  </code></pre>
  
  <p>JournalEntryTip:</p>
  
  <pre><code>internal JournalEntryTip(BinaryReader reader) {
      Read(reader);
  }
  </code></pre>
  
  <p>The code at the very top is invoked with a byte of value 1, mapped to <code>JournalEntryType.Tip</code>.</p>
  
  <p>When I try to run this code, it throws <code>System.MissingMethodException: 'Constructor on type 'JournalEntryTip' not found.'</code></p>
  
  <p>Why is that? The constructor exists and should be invoked with the right argument.</p>