Actually the whole problem reduces to being able to pass an interface as a parameter to a function:
public interface class Intf
public ref class Class1
void Something(Intf i)
This yields on the function 'Something':
error C3149: 'InterfaceTest::Intf' : cannot use this type here without a top-level '^'