Classe d'emballage générique

Compte tenu de la hiérarchie suivante:

class A
{
}
class B : A
{
    public void Foo() { }
}
class C : A
{
    public void Foo() { } 
}

C'est une bibliothèque tierce, et je ne peux pas le modifier. Est-il possible que je peux écrire une sorte de "générique de type "modèle" wrapper " qui transmettrait les Foo() la méthode de l'winrar objet passé en argument du constructeur?
J'ai fini par écrire la suite, qui n'utilise pas de génériques et semble plutôt moche:

class Wrapper
    {
        A a;
        public Wrapper(A a)
        {
            this.a = a;
        }

        public void Foo()
        {
            if (a is B) { (a as B).Foo(); }
            if (a is C) { (a as C).Foo(); }
        }

    }

J'aimerais quelques modèles de contrainte comme Wrapper<T> where T : B or C.

source d'informationauteur amnezjak