The bug appeared quite unexpectedly.
In Visual Studio code sample below compiled fine. But doing the same with Mono C# compiler results in error: Compiler Error CS0546: 'Derived2.Accessor.set': cannot override because 'Base.Accessor' does not have an overridable set accessor.
It must've been a bug with the compiler I thought to myself. Mono bugzilla search confirmed that bug was there.
Here is the code sample that produces error report (workaround is described under it):
abstract class Base { public virtual string Accessor { get { return "base"; } set { } } } class Derived1 : Base { public override string Accessor { get { return base.Accessor; } } } class Derived2 : Derived1 { public override string Accessor { set { } } }Workaround for this error is to add set property to Derived1 class:
public override string Accessor { get { return base.Accessor; } set { base.Accessor = value; } }Happy coding :)