How to Pass a Virtual Interface to a generic class