// Copyright (c) AlphaSierraPapa for the SharpDevelop Team // // Permission is hereby granted, free of charge, to any person obtaining a copy of this // software and associated documentation files (the "Software"), to deal in the Software // without restriction, including without limitation the rights to use, copy, modify, merge, // publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons // to whom the Software is furnished to do so, subject to the following conditions: // // The above copyright notice and this permission notice shall be included in all copies or // substantial portions of the Software. // // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, // INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR // PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE // FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER // DEALINGS IN THE SOFTWARE. using System; namespace ICSharpCode.Decompiler.Tests.TestCases { public class MemberLookup { static readonly Action delegateConstruction = (new Child1() as Base1).TestAction; public static int Main() { Console.WriteLine((new Child1() as Base1).Field); Child1.Test(); delegateConstruction(); return 0; } class Base1 { public int Field = 1; protected virtual void TestMethod() { Console.WriteLine("Base1.TestMethod()"); } public void TestAction() { Console.WriteLine("Base1.TestAction()"); } } class Child1 : Base1 { Child1 child; new public int Field = 2; public static void Test() { var o = new Child1(); o.child = new Child1(); o.TestMethod(); } protected override void TestMethod() { base.TestMethod(); if (child != null) child.TestMethod(); Console.WriteLine("Child1.TestMethod()"); } new public void TestAction() { Console.WriteLine("Child1.TestAction()"); } } } }