How can a base class reference a supertype and still compile?
<p>how does this class compile?</p>

<pre><code>public class ReflectionHelper
{
 public static IReflectionHelper CreateHelper( object subject )
 {
  return ( IReflectionHelper )Activator.CreateInstance( typeof( ReflectionHelper&lt;&gt; ).MakeGenericType( GetFirstGenericArgument( subject ) ) );
 }
 public static Type GetFirstGenericArgument( object subject )
 {
  return subject.GetType().GetGenericArguments()[ 0 ];
 }
}

public class ReflectionHelper&lt;T&gt; : ReflectionHelper, IReflectionHelper where T : new()
    {}
</code></pre>

<p>Notice ReflectionHelper<code>&lt;T&gt;</code> inherits from ReflectionHelper which has a referance to the type of ReflectionHelper&lt;>
For some reason I was expecting a circular reference compile error.</p>
