Почему разрешено изменять видимость и наличие геттеров или сеттеров в свойстве при реализации интерфейса?
interface IFoo
{
string Bar { get; }
}
class RealFoo : IFoo
{
public RealFoo(string bar)
{
this.Bar = bar;
}
public string Bar { get; private set; }
}
class StubFoo : IFoo
{
public string Bar { get; set; }
}
... и не законно делать то же самое при реализации абстрактного класса?
abstract class AbstractFoo : IFoo
{
public abstract string Bar { get; }
}
class RealFoo : AbstractFoo
{
public RealFoo(string bar)
{
this.Bar = bar;
}
// Cannot override because 'Bar' does not have an overridable set accessor
public override string Bar { get; private set; }
}
public string Bar { override get; private set; }
- person Jim Balter   schedule 25.10.2014sealed
, у которого есть использование). Если мой код используетAbstractFoo
, какая разница, еслиRealFoo.Bar
имеет публичный сеттер? - person binki   schedule 30.01.2015