2017-03-09 1 views
0

Ich habe ein größeres Projekt und möchte einen Variablenwert in die BaseClass ändern, wenn der Variablenwert in der abgeleiteten Klasse geändert wird . Hier ein einfaches Beispiel.C# Wie ändere ich den Variablenwert in der BaseClass, wenn die neue Variable in die abgeleitete Klasse geändert wird?

Was ich will, wenn ich den Wert Obj.ModelTyp.Name in "Name123" ändern, dann erhält der Base.ModelTyp.Name automatisch den gleichen Wert "Name123". Gibt es einen einfachen Weg, das zu tun?

Dank Steffen

namespace Question 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      DataObjekt Obj = new DataObjekt();

Obj.ModelTyp.Name = "Name123"; // is there a Way to Change Base.ModelTyp.Name // if Obj.ModelTyp.Name is changed? Obj.ModelTyp.Data = "4567"; Obj.DoSomithing(); } } public class FirstBaseClass { public FirstBaseClass() { ModelTyp = new BaseType(); } public BaseType ModelTyp { get; set; } } public class SecondBaseClass : FirstBaseClass { public void DoSomithing() { string Test = this.ModelTyp.Name; // there is nothing because Base.ModelTyp.Name //but I Want to have "Name123" } } public class DataObjekt : SecondBaseClass { public DataObjekt() { ModelTyp = new ObjektData(); } new public ObjektData ModelTyp { get; set; } } public class BaseType { public string Name { get; set; } } public class ObjektData : BaseType { public string Data { get; set; } }

}

+0

Sie wirklich zwei Eigenschaften will ModelTyp (eine Art BaseData und ein vom Typ ObjektData) in der Klasse mit dem Namen DataObjekt? –

Antwort

0

Beziehungen Ihre Klassen scheinen wirklich kompliziert und verworren. Sie sollten wahrscheinlich in Betracht ziehen, es ein wenig zu vereinfachen.

Wie auch immer, der Grund, warum Ihr Code jetzt nicht funktioniert, ist, weil Sie die Basisklasse 'ModelTyp Eigenschaft versteckt und eine neue ModelTyp Eigenschaft in DataObjekt erstellt haben. Hoffentlich wusstest du das schon.

Aber Sie nicht wirklich wollen Sie eine brandneue, separate Eigenschaft erstellen, oder? Sie möchten nur den Typ ModelTyp in ObjektData ändern. Daher können Sie nur DataObjekt.ModelTyp auf die gleiche Sache wie FirstBaseClass.ModelTyp im Konstruktor verweisen machen:

public DataObjekt() { 
    ModelTyp = new ObjektData(); 
    base.ModelTyp = this.ModelTyp; // <- this line 
} 
+0

Danke :), das ist die Linie, nach der ich suche :) –

Verwandte Themen