title: Can obj.GetType().IsInterface be true?
body: <p>While doing something almost completely irrelevant, a question popped into my head:</p>
  
  <p><strong>Can an expression of the form <code>obj.GetType().IsInterface</code> ever be true in a codebase consisting exclusively of C# code?</strong></p>
  
  <p>I suspect the answer is no, because:</p>
  
  <ul>
  <li><code>GetType()</code> will always return the runtime type.</li>
  <li>The runtime type for concrete types matches the invoked constructor. Thus, it is never an interface, because interfaces don't have constructors.</li>
  <li>Anonymous types cannot implement an interface (and if they did, they'd still have their anonymous class type).</li>
  <li>Instances of internal classes of other assemblies implementing public interfaces will still have the class as the runtime type.</li>
  <li><a href="http://blog.marcgravell.com/2009/08/who-says-you-cant-instantiate-interface.html">Using <code>[ComImport, CoClass(typeof(MyClass))]</code> on an interface</a> makes it look like you can instantiate it, but the constructor call actually instantiates the referenced class.</li>
  </ul>
  
  <p>I can't think of any other case. Am I missing something, or is my guess correct?</p>