public void TestVirtualFuntionRetVal() { // Virtual Functions Object Slicing case // See http://stackoverflow.com/questions/3479712/virtual-functions-object-slicing using (var baseVirtual = BaseClassVirtual.Base) { TestVirtualFunction(baseVirtual, 5); } BaseClassVirtual baseClass = new DerivedClassVirtual(); TestVirtualFunction(baseClass, 10); baseClass.Dispose(); using (var basePtr = BaseClassVirtual.BasePtr) { TestVirtualFunction(basePtr, 10); } using (var managed = new ManagedDerivedClassVirtual()) { TestVirtualFunction(managed, 15); baseClass = managed; TestVirtualFunction(baseClass, 15); } using (var retBase = new ManagedDerivedClassVirtualRetBase()) { TestVirtualFunction(retBase, 10); } }