static void TestVirtualMethodCallsOnStruct() { // V2 adds override of ToString if (typeof(MyStructWithVirtuals).GetMethod("ToString").DeclaringType == typeof(MyStructWithVirtuals)) { // Make sure the constrained call to ToString doesn't box var mystruct = new MyStructWithVirtuals(); mystruct.ToString(); Assert.AreEqual(mystruct.X, "Overriden"); } }
static void TestVirtualMethodCalls() { var o = new MyClass(); Assert.AreEqual(o.VirtualMethod(), "Virtual method result"); var iface = (IMyInterface)o; Assert.AreEqual(iface.InterfaceMethod(" "), "Interface result"); Assert.AreEqual(MyClass.TestInterfaceMethod(iface, "+"), "Interface+result"); // V2 adds override of ToString if (typeof(MyStructWithVirtuals).GetMethod("ToString").DeclaringType == typeof(MyStructWithVirtuals)) { // Make sure the constrained call to ToString doesn't box var mystruct = new MyStructWithVirtuals(); mystruct.ToString(); Assert.AreEqual(mystruct.X, "Overridden"); } }