Let me model my question like this.
I have a hierarchy where Dog, Cat, Bird are subclasses of the abstract class Animal. Bird has a new event BirdEvent that is not (and should not be) in Animal.
I have a class MyObject that has a field of type Animal (to take advantage of polymorphism). Let's assume that some instances of MyObject will fill their Animal field with Bird and others with Cat or Dog. If the Animal field contains an instance of Bird, I want to register for its BirdEvent. But as the field is of type Animal, it obviously cannot have a BirdEvent.
MyObject myObject= new Myobject();
if (myObject.Animal is Bird)
{
myObject.Animal.BirdEvent += reactToBirdEvent;
}
Is there a way I could reach BirdEvent? Or quite possibly, is my design flawed somewhere I didn't see?