error al pasar una referencia a un objeto derivado en un método

En c # estoy intentando implementar un método que puedo usar para vincular los datos a cualquier control que le pase (siempre que el control se derive de un objeto de control de datos)

dado el método

 public void CTLBindData(ref DataBoundControl ctl){ ... }

Me sale un error al intentar pasar el control derivado a la función
por ejemplo el siguiente código

DropDownList lister = new DropDownList();  
CTLBindData(ref lister);

Genera un error de conversión

Ok, puedo aceptarlo, pero lo siguiente me confunde (probablemente porque estoy acostumbrado a c ++ no a c #)

CTLBindData(ref (DataBoundControl)lister);

en este caso, aparece el error "Un argumento de referencia o de salida debe ser una variable asignable"

Para aclarar una lista desplegable se hereda de un control de lista que se hereda de un DataBoundControl

Esto no tiene sentido para mí, debería poder pasar cualquier objeto que se haya derivado de un control de base de datos. Parece que el encasillado explícito está causando el problema.

¿Alguna pista en cuanto a lo que estoy haciendo mal?

corriente continua

Respuestas a la pregunta(3)

Su respuesta a la pregunta