У меня есть приложение 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;
}
}
Это не так хорошо, как хотелось бы, но это работает.
+1 Скорее меня :-) –
Поскольку интерфейс не является заменой абстрактного базового класса: / –