Override get, but not set
c#
Solution
New in C# 6.0:
If you are only calling the setter within your constructor, you can resolve this problem using read-only properties.
void Main()
{
BaseClass demo = new DClass(3.6);
}
public abstract class BaseClass
{
public abstract double MyPop{ get; }
}
public class DClass : BaseClass
{
public override double MyPop { get; }
public DClass(double myPop) { MyPop = myPop;}
}
Problem
I have an abstract class that defines a `get`, but not `set`, because as far as that abstract class is concerned, it needs only a `get`. ``` public abstract BaseClass { public abstract double MyPop {get;} } ``` However, in some of the derive class, I need a `set` property, so I am looking at this implementation ``` public class DClass: BaseClass { public override double MyPop {get;set;} } ``` The problem is, I got a compilation error, saying that *.set: cannot override because *. does not have an overridable set accessor. Even though I think that the above syntax is perfectly legitimate. Any idea on this? Workaround, or why this is so? Edit: The only approach I can think of is to put both `get` and `set` as in the abstract class, and let the subclass throws a `NotImplementedException` if `set` is called and it's not necessary. That's something I don't like, along with a special setter method .