Forums Neueste Beiträge
 

Referenz auf klasseninternes Objekt durch Interface schützen

23/01/2008 - 08:55 von Tom | Report spam
Hallo

Ich habe eine Klasse, welche eine weitere private Klasse mit internen
Feldern beinhaltet. Die innere Klasse wird über ein Interface nach Aussen
sichtbar gemacht.
Wie kann ich nun verhindern, dass von Aussen über das Interface eine
Referenz auf die interne Klasse erzeugt wird, jedoch direkte Zugriffe von
Aussen auf die internen Felder der inneren Klasse möglich sind.

Beispiel:
Config ist die àussere Klasse
Datas ist die innere Klasse, zugreifbar über ein Property CFData mit
Interface IDatas
Keyset ist ein Feld der Klasse Datas, welches über ein Property zugreifbar
ist.

Folgendes soll möglich sein:
Config.CFData.Keyset = 35; Direktzugriff

Folgendes soll nicht möglich sein:
Config.IData tmpcfg = Config.CFData; Zugriff über Referenz
tmpcfg.Keyset = 35;
...oder dann den Wert Keyset der innneren Klasse nicht veràndern.

Danke
Tom
 

Lesen sie die antworten

#1 Albert Weinert
23/01/2008 - 12:01 | Warnen spam
Tom schrieb:

Wie kann ich nun verhindern, dass von Aussen über das Interface eine
Referenz auf die interne Klasse erzeugt wird, jedoch direkte Zugriffe von
Aussen auf die internen Felder der inneren Klasse möglich sind.

[...]

Folgendes soll möglich sein:
Config.CFData.Keyset = 35; Direktzugriff

Folgendes soll nicht möglich sein:
Config.IData tmpcfg = Config.CFData; Zugriff über Referenz
tmpcfg.Keyset = 35;
...oder dann den Wert Keyset der innneren Klasse nicht veràndern.



Das Interface sollte dann nur eine Getter definieren, die klasse kann
zusàtzlich einen Setter haben.

interface IData
{
int Keyset { get; }
}

class CDFdate : IData
{
int _key;

public int Key
{
get { return _key; }
set { _key = value; }
}
}

Freundliche Grüße

Albert

Ähnliche fragen