I have the following situation and I want to know how I can make the property SomeNumber
to be read only from instances of class A
? BTW, I am using C# latest stable build, or not 7.2 c#, so I can't use private protected
modifier.
So I don't want to be able to set SomeNumber
on accident from class A. I know it can be written in another way to achieve it but can I make the setter in class A
's property only visible to class B
's property setter? So you can still read SomeNumber
from instances of A
. Thanks.
I want to to this because I have multiple classes, not only B
, derived from class A
that hides the base property and they all need to run their own methods when setting SomeNumber
.
class A
{
private int someNumber;
internal int SomeNumber
{
get { return someNumber; }
set
{
someNumber = value;
SomethingNotSpecificForDerivedClasses();//I prefer not to move this to each derived setter! There are more derived classes than just B, fyi
}//I NEED TO MODIFY THE ACCESS OF THIS
}
private void SomethingNotSpecificForDerivedClasses()
{
...
}
}
class B : A
{
new internal int SomeNumber//hides base member
{
get { return base.SomeNumber; }
set
{
base.SomeNumber = value;//ONLY THIS SETTER SHOULD BE ALLOWED TO DO THIS
SomethingINeedToRunWhenSettingSomeNumber();
}
}
private void SomethingINeedToRunWhenSettingSomeNumber()
{
...
}
}