Frage

Wenn wir eine Eigenschaft als public Eigenschaft und in dieser Eigenschaft definieren wir haben eine protected Getter. was bedeutet das? wenn Eigentum öffentlich ist, was bedeutet, die einen geschützten Getter für das Mittel? siehe unten Code:

    public ISessionFactory SessionFactory
    {
        protected get { return sessionFactory; }
        set { sessionFactory = value; }
    }
War es hilfreich?

Lösung

In C # Sie haben dürfen Getter und Setter mit Zugriffsebene (siehe Zugriffsmodifikatoren ) anders als die Gesamt-Eigenschaft. Dies ist das häufigste Muster

public class FooObject
{
    public String Foo 
    {
      get;
      private set;
    }
}

Auf diese Weise können Objekte FooObject Instanziieren den Wert von Foo abrufen, aber nicht seinen Wert gesetzt. Der private Modifikator auf den Setter bedeutet, dass sich nur FooObject diese Fähigkeit hat (ohne die Verwendung der Reflexion).

Es gibt zwei Vorteile aus:

  1. Mit dem Zusatz von automatischen Eigenschaften (keine Variablen assign der get und Sollwert erforderlich), erlaubt dies die private Einstellung der Eigenschaft Variable (es für Sie bei der Kompilierung erstellt wird), so getan werden, ohne mit explizit die Variable erstellen. Ohne diese konnte man nicht eine automatische Eigenschaft verwenden, es sei denn, Sie immer die get und set-Funktion wollte alle öffentlich sein, alle privaten usw.

  2. Es ermöglicht eine Abstraktionsebene, so dass alle Methoden, ob öffentlich, privat oder in anderer Weise durch das Grundstück zu gehen und nicht direkt auf die private Variable zugreifen. Sehen Sie diese Frage für weitere Informationen.

In Ihrem Beispiel andere Objekte können die Sitzung Fabrik Wert gesetzt, sondern nur Klassen, die vererben können es abrufen. Die meiste Zeit, wenn ein Objekt den Wert eingestellt, kann es auch abrufen, aber es gibt Fälle, in denen es wäre vorteilhaft für die es nicht erlauben. Dies ist zulässig, weil die eingestellte Ereignis nicht der Fall ist, eine größere Menge des Zugangs als erlauben, was für die gesamte Eigenschaft definiert wurde.

Das beste Beispiel, das ich denken kann, wäre, wenn auf dem Set Ereignisse, das Set-Objekt geändert wurde. So wurde zum Beispiel, wenn es das Sets Ereignis eines Verbindungsobjekts, und von der Einstellung Ereignisse Einstellung wurde die Verbindungszeichenfolge hinzugefügt, und die Verbindung zur Datenbank geöffnet wurde (In meinem Beispiel, würde ich wahrscheinlich den Code Refactoring nicht auf diese Weise zu handeln , aber so etwas entstehen könnte).

Andere Tipps

Es bedeutet, dass der Getter kann nur durch Unterklassen aufgerufen werden. Die ‚geschützt‘ vor dem Getter so zu sagen, überschreibt die ‚Öffentlichkeit‘ für den Getter Teil der Immobilie.

Das Schlüsselwort protected ist Mitglied Zugriffsmodifikator. Ein geschütztes Mitglied ist von innerhalb der Klasse, in der sie deklariert ist, und aus jeder Klasse von der Klasse abgeleitet, die dieses Mitglied erklärt.

http://msdn.microsoft.com/ en-us / library / bcd5672a (VS.71) aspx

Die geschützten get bedeutet, dass diese Getter Eigentum kann nur von einer geerbten Klasse dieser Klasse zugegriffen werden. der Satz ist angenommener Öffentlichkeit so kann diese Eigenschaft öffentlich gefassten werden.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top