class A;
class B : A;
class C : A;
void func1( B );
void func2( C );

があり、中で使用する func1 または func2 の関数のみが異なるある関数があったとします。
こういう関数が多く、中で呼び出す関数以外はすべて同じなのでこれをまとめたいと考えます。
そこでデリゲートを使用して呼び出す関数をパラメータで渡すことを考えました。

delegate void dele( A );
void commonFunc( int para1, int para2, dele callFunc );

これで、
commonFunc( 1, 2, func1 );
などとやると、もちろんデリゲートの型が違うためコンパイラに怒られます。

こういう場合にキレイにまとめるよい方法はあるでしょうか?