Frage

Ich bin mir nicht einmal sicher, wie dieses Prinzip genannt wird oder wie ich danach suchen soll. Deshalb entschuldige ich mich aufrichtig, wenn es schon einmal angesprochen wurde, aber der beste Weg, dies zu tun, ist ein Beispiel.

class Properties
{
  public string Name { get; set; }
}

class MyClass
{
    class SubProperties: Properties
    {
        public override Name
        {
            get { return GetActualName(); }
            set { SetActualName(value); }
        }
    }

    public SubProperties ClassProperties;

    private string GetActualName()
    {
        return SomeFunction();
    }

    private void SetActualName(string s)
    {
        ClassProperties.Name = SomeOtherFunction(s);
    }
}

Die Idee ist, ein Objekt zu haben, das es instanziiert MyClass eine voll zugängliche Eigenschaft haben ClassProperties. Für dieses Objekt würde es genau wie ein Eigenschaftenobjekt aussehen, aber hinter den Kulissen berechnet und modifiziert Myclass die Ergebnisse der Felder. Diese Erklärungsmethode ist offensichtlich falsch, da ich nicht zugreifen kann GetActualName() und SetActualName() von innerhalb der SubProperties Definition. Wie würde ich so etwas erreichen?

War es hilfreich?

Lösung

Suchen Sie so etwas?

abstract class Properties
{
    public abstract string Name { get; set; }
}

class MyClass
{
    private class SubProperties : Properties
    {
        private MyClass myClass;

        public SubProperties(MyClass myClass)
        {
            this.myClass = myClass;
        }

        public override Name
        {
            get { return this.myClass.GetActualName(); }
            set { this.myClass.SetActualName(value); }
        }
    }

    private string name;

    public MyClass
    {
        this.MyClassProperties = new SubProperties(this);
    }

    public Properties MyClassProperties { get; private set; }

    private string GetActualName()
    {
        return this.name;
    }

    private void SetActualName(string s)
    {
        this.name = s;
    }
}

Sie müssen einen Verweis auf eine MyClass -Instanz an die Subproperties -Instanz weitergeben, wenn Sie von Subproperties aus Myclassmethoden zugreifen möchten.

Andere Tipps

public virtual string Name { get; set; }
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top