Generic Method Fails Explicit Cast
<pre><code>//I know for sure that the animal being passed is a Tiger
protected virtual void Eat&lt;AnimalType&gt;(Animal animal)
where AnimalType : Animal
 {
   //The animal type is a Tiger type.
   //Should be equivalent to :
   //Tiger myDerivedAnimal = animal as Tiger;
   AnimalType myDerivedAnimal = animal as AnimalType;

   if (myDerivedAnimal != null)
   {
       myDerivedAnimal.eat();
   }
}
</code></pre>

<p>When I'm making the call :</p>

<pre><code>Eat&lt;Tiger&gt;(anAnimalThatIsATiger);
</code></pre>

<p>For some reason the as cast is returning my a null object. I've looked trough the debugger and the animal passed in arguments is an animal with a reference to a tiger, so why is this cast failing to return my my tiger? As of right now myDerivedAnimal is filled with default values(0, null, etc).</p>
