poperty-setter sperren

03/01/2009 - 10:56 von Thomas Martin Mädzulat | Report spam
hallo allerseits & ein gutes neues jahr!

ist es möglich, den setter eines properties einer classe zu sperren, wenn
diese als public field in einer anderen verwendet wird und der zugriff von
außen erfolgt?

es kann sein, daß das keine saubere oop ist, - nur ist der aufwand, die
ànderungen zu verarbeiten, die ein setzen des properties in der höheren
classe auslöst, z.z. zu hoch und ich möchte das auf spàter vertagen.
mir fiel vorerst ein, auf das Changed-event zu reagieren, das implementiert
ist, aber es wàre mir lieber, wenn das schon zur compilezeit abgefangen
werden könnte.

giebt es vielleicht eine ganz andere lösung?

danke für antwort,
gruß Martin
 

Lesen sie die antworten

#1 Alexander Mueller
03/01/2009 - 20:42 | Warnen spam
Thomas Martin Màdzulat schrieb:
hallo allerseits & ein gutes neues jahr!

ist es möglich, den setter eines properties einer classe zu sperren, wenn
diese als public field in einer anderen verwendet wird und der zugriff von
außen erfolgt?

es kann sein, daß das keine saubere oop ist, - nur ist der aufwand, die
ànderungen zu verarbeiten, die ein setzen des properties in der höheren
classe auslöst, z.z. zu hoch und ich möchte das auf spàter vertagen.
mir fiel vorerst ein, auf das Changed-event zu reagieren, das implementiert
ist, aber es wàre mir lieber, wenn das schon zur compilezeit abgefangen
werden könnte.

giebt es vielleicht eine ganz andere lösung?





Du kannst für getter und setter unterschiedlicher Zugriffsmodifikatoren
setzen, z.B. den setter private oder internal aber den getter public.

Dann ist das Setzen des Wertes nur eingeschrànkt möglich.
Ist ihmo auch nicht "krumm" aus OO-Sicht.


MfG,
Alex


class Program
{
static void Main(string[] args)
{
Test test = new Test();
Console.WriteLine(test.Value);
test.Value = 24; //compiliert nicht, weil setter private ist
Console.ReadLine();

}
}

internal class Test
{
private int _value;

internal Test() { this._value = 42; }

internal int Value
{
get { return this._value; }
private set { this._value = value; }
}

}

Ähnliche fragen