Announcement

Collapse
No announcement yet.

Gespiegelte Member?

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Gespiegelte Member?

    Hallo,

    laut MS-Dokumentation ist die Spiegelung (Verbergen eines Basisklassenmembers in einer abgeleiteten Klasse) in C# "nicht verfügbar" (in Basic mit shadows gekennzeichnet). Ich würde gerne dieses Verfahren in meiner C# Anwendung verwenden. Weiß denn jemand ob das wirklich nicht geht bzw. es einen Workaround gibt? Wäre für jeden Tip dankbar.
    Danke!

  • #2
    Hallo,

    normalerweise sollte die Deklaration als <b>new public virtual void DoWork();</b> in C# das Gleiche bewirken wie mit <b>Public Shadow Sub DoWork()</b> in VB.NET. Es kommt aber wie so oft immer auf die Details (nachfolgende Klasse bzw. Aufruf) an, so dass das Kleingedruckte in der Spezifikation ins Spiel kommt. Auf der Hilfeseite <i>10.5.3 Virtual methods</i> der <i>C# Language Specification</i> ist dazu das folgende Beispiel zu finden:
    <code>
    using System;
    class A
    {
    public virtual void F() { Console.WriteLine("A.F"); }
    }
    class B: A
    {
    public override void F() { Console.WriteLine("B.F"); }
    }
    class C: B
    {
    new public virtual void F() { Console.WriteLine("C.F"); }
    }
    class D: C
    {
    public override void F() { Console.WriteLine("D.F"); }
    }
    class Test
    {
    static void Main() {
    D d = new D();
    A a = d;
    B b = d;
    C c = d;
    a.F();
    b.F();
    c.F();
    d.F();
    }
    }
    </code&gt

    Comment

    Working...
    X