Если кому-то интересно, что я сделал, я, наконец, выбрал абстрактный интерфейс вместо интерфейса и скрыл метод в производном классе, чтобы получить правильные методы доступа:
Например, в базовом абстрактном классе (интерфейс только для чтения):
protected double accuracy;
public double Accuracy { get { return accuracy; } }
В производном классе:
public new double Accuracy
{
get { return accuracy; }
set { accuracy = value; }
}
Конечно, некрасиво с ключевым словом "new", но в этом случае оно подойдет мне.