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 :)

