Ableitung einer Klasse mit der Zuweisung der Basis

  • C#
  • .NET (FX) 4.5–4.8

Es gibt 4 Antworten in diesem Thema. Der letzte Beitrag () ist von exc-jdbi.

    Ableitung einer Klasse mit der Zuweisung der Basis

    Hallo Leute und Danke für's reinschauen...

    Irgend wie hab ich gerade einen Hänger, ob es überhaupt geht, was ich will:

    Klasse A...
    Klasse B : A [Abgeleitet von Klasse A]

    var xx = new Klasse B(objekt typ:Klasse A);

    Konstruktor von Klasse B:

    public Klasse B(Objekt von Klasse A) : Base = Objekt von Klasse A
    {

    }

    Hat einer Verstanden was ich meine? :rolleyes: Und geht sowas? ?( Wenn ja, wie schreib ich das in C# 8o

    Danke euch im Voraus...
    @EugenIS So was:
    Spoiler anzeigen

    C#-Quellcode

    1. Class A
    2. {
    3. A()
    4. {
    5. }
    6. A(int value)
    7. {
    8. }
    9. }
    10. Class B : A
    11. {
    12. B() : base()
    13. {
    14. }
    15. B(int value) : base(value)
    16. {
    17. }
    18. }
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    vielen Dank für deine Antwort.

    nicht so ganz. Den du übergibst der Classe B ein anderen Objekt (in dem fall int) und nicht seine eigene Basisclasse woraus er sich bilden sollte.

    Bei dir steht so:
    B(int value) : base(value)

    ich meinte so:
    B(A value) : value

    oder noch besser erklert:
    ich möchte die Basisklasse zuweisen können. Ungefähr so:
    B(A value) : base = value

    also ungefähr so. Die Basis der klasse B soll klasse das objekt der klasse A werden woraus es abgeleitet ist.

    [Nachtrag] Ich vermute, dass es garnicht möglich ist. Es wäre so, als hätte ich von einem Kind verlang die Eltern zu wechseln. :/

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „EugenIS“ ()

    @EugenIS So wie Du es beschreibst geht das in C# nicht.
    In C++ gibt es ein SubclassDlgItem(), das macht ggf. so was ähnliches, das nützt Dir aber nix.
    Sorry.
    ====
    Ggf. solltest Du eine Klasse C ohne Basisklasse machen und der die A-Instanz reinreichen und als Member verwenden,
    dann baust Du einen Wrapper drum herum und kannst auf A-Methoden und Properties zugreifen.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Die direkte Zuweisung der Basisklasse geht nicht, aber du kannst eine Basisobject übergeben, und die Innereien damit initialisieren. Das sollte funktionieren

    Freundliche Grüsse

    exc-jdbi

    C#-Quellcode

    1. public interface IA
    2. {
    3. }
    4. public class A : IA
    5. {
    6. int Integers;
    7. public A()
    8. {
    9. this.Integers = -1;
    10. }
    11. public A(int value)
    12. {
    13. this.Integers = value;
    14. }
    15. public A(A obj) : this(obj.Integers)
    16. {
    17. }
    18. }
    19. public class B : A
    20. {
    21. B() : base()
    22. {
    23. }
    24. public B(A obj) : base(obj)
    25. {
    26. }