Listing 4

using namespace System;

public interface struct IOne 
{
   void f();
};
public interface struct ITwo
{
   void f();
};
public ref class Foo : public IOne, ITwo
{
public:
   void virtual f1() = IOne::f {}
   void virtual f()  = ITwo::f {}
};
void main()
{
   Foo^ p = gcnew Foo;
   IOne^ i1 = p;
   i1->f(); // Calls Foo::f1
   ITwo^ i2 = p;
   i2->f(); // Calls Foo::f
   p->f();  // Calls Foo::f
}