Hi-
...
> The short answer is that C# doesn't allow different protection levels
> for properties. Period.
Bummer.
...
> If you *really* want to use a property, name it differently:
>
> class A {
> private int data;
> public int Data {
> get {return data;}
> }
>
> protected int InternalData {
> get {return data;}
> set {data = value;}
> }
> }
That's a good idea. Obvious, simple, and elegant.
Thanks,
-Eric.
>
> - Jon
>
> On Mon, 2003-01-13 at 08:08, Eric J. Peters wrote:
> > Hi-
> >
> > class A is the simplest example of the protection levels I could come up with, but
>doesn't
> > really do anything to explain the thought behind the question, I apologize.
> >
> > Here it is again:
> >
> > > > class A {
> > > > private int m_data = 1;
> > > > public int Data {
> > > > get { return m_data; }
> > > > }
> > > > protected int Data {
> > > > set { m_data = value; }
> > > > }
> > > > }
> >
> > First, the accessors are necessary in the real implementation because the act of
>getting
> > and setting isn't trivial (as it is in class A). Besides, accessors are good
>practice,
> > especially when anticipating code reuse; which is also expected in the real
>implementation.
> >
> > The property 'Data' is publically gettable, but not publically settable -- a
>read-only
> > property for anything but child classes.
> >
> > Since the setting is non-trivial, I don't want to allow subclasses to directly set
>the
> > member, but to use the property setter. True, I could just make the setter
>public, but
> > that just ain't right from a overly anal-retentive software engineering
>perspective.
> >
> > Currently to accomodate all of that, I have a 'protected setData(int)' member to
>allow for
> > setting the data by the class (and it's subclasses). However, that is not
>consistant with
> > the accessor model that C# uses, and is just wrong for the same SE perspective
>mentioned
> > above.
> >
> > I scanned the ECMA spec, but came up empty handed. Anyone know of a way to code
>the
> > get and set accessors with different protection levels?
> >
> > -Eric.
> >
> > On Sat, 11 Jan 2003, Dan Guidara wrote:
> >
> > > On Fri, 2003-01-10 at 19:09, Eric J. Peters wrote:
> > > > Hi-
> > > >
> > > > While this isn't a mono-specific question, I think this list, being
> > > > very technical and C# based, is the best place I know of to ask.
> > > >
> > > > Imagine a class as shown here:
> > > >
> > > >
> > > > class A {
> > > > private int m_data = 1;
> > > > public int Data {
> > > > get { return m_data; }
> > > > }
> > > > protected int Data {
> > > > set { m_data = value; }
> > > > }
> > > > }
> > > >
> > > >
> > > > Obviously, this is a compile-time error. My specific question is if
> > > > there is a language mechanism to allow for different access levels between the
> > > > two different accessors. If not, then I would be interested in hearing why
> > > > not -- it seems like a significant oversight to me.
> > > >
> > > > Thanks,
> > > > -Eric.
> > > >
> > > > _______________________________________________
> > > > Mono-list maillist - [EMAIL PROTECTED]
> > > > http://lists.ximian.com/mailman/listinfo/mono-list
> > > >
> > >
> > >
> > > Eric,
> > > I am not sure why you would want to do that. Its my understanding that
> > > Properties are public in their nature to allow an interface for setting
> > > internal variables in a controlled manner from extranal classes, etc. I
> > > quess you could create functions with the desired protection levels to
> > > read and write the values. I am not sure where the oversight comes into
> > > it at all.
> > >
> > > Dan
> > >
> > >
> > >
> > > _______________________________________________
> > > Mono-list maillist - [EMAIL PROTECTED]
> > > http://lists.ximian.com/mailman/listinfo/mono-list
> > --
> > Moore's Law has been the name given to everything that changes exponentially.
> > I saw, if Gore invented the Internet, I invented the exponential.
> >
> > -Gordon Moore
> >
> > _______________________________________________
> > Mono-list maillist - [EMAIL PROTECTED]
> > http://lists.ximian.com/mailman/listinfo/mono-list
--
Moore's Law has been the name given to everything that changes exponentially.
I saw, if Gore invented the Internet, I invented the exponential.
-Gordon Moore
_______________________________________________
Mono-list maillist - [EMAIL PROTECTED]
http://lists.ximian.com/mailman/listinfo/mono-list