У меня есть приложение на C # 2.0, в котором базовый интерфейс обеспечивает доступ только для чтения к значению в конкретном классе.Но в конкретном классе я хотел бы иметь доступ на чтение / запись к этому значению.Итак, у меня есть такая реализация:
public abstract class Base
{
public abstract DateTime StartTime { get; }
}
public class Foo : Base
{
DateTime start_time_;
public override DateTime StartTime
{
get { return start_time_; }
internal set { start_time_ = value; }
}
}
Но это дает мне ошибку:
Foo.cs(200,22): error CS0546: 'Foo.StartTime.set': cannot override because 'Base.StartTime' does not have an overridable set accessor
Я не хочу, чтобы у базового класса был доступ для записи.Но я хочу, чтобы конкретный класс предоставлял доступ для чтения / записи.Есть ли способ заставить это работать?
Спасибо, PaulH
К сожалению, Base
нельзя изменить на интерфейс, поскольку он также содержит неабстрактную функциональность.Что-то, что я должен был бы добавить в исходное описание проблемы.
public abstract class Base
{
public abstract DateTime StartTime { get; }
public void Buzz()
{
// do something interesting...
}
}
Мое решение - сделать это:
public class Foo : Base
{
DateTime start_time_;
public override DateTime StartTime
{
get { return start_time_; }
}
internal void SetStartTime
{
start_time_ = value;
}
}
Это не так хорошо, как хотелось бы, ноработы.