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
}