Пожалуйста, уточните ... что вы подразумеваете под ', если вы хотите установить свойство Interval, где это происходит?' Если вы ищете, когда устанавливать свойства для ITimer, я предпочитаю использоватьметод для лучшей читаемости и обслуживания:
public class MyClass {
private ITimer timer;
public ITimer Timer {
get { return timer; }
set { SetDefaultTimer(value); }
}
private void SetDefaultTimer(ITimer timer) {
timer.Interval = 1000;
// other default properties
// assign
this.timer = timer;
}
}
Я не верю, что это остановит кого-то от изменения интервала или других свойств таймера.Я не знаю, является ли это вашим намерением.
Обновление:
В зависимости от вашего интерфейса ITimer, вы можете полностью скрыть свойство Interval, что означает, что интервал не может быть изменениз-за инкапсуляции.Для раскрытия свойства interval через инкапсуляцию требуется что-то вроде следующего:
public interface ITimer {
int Interval {get; set;}
}
... предоставляет способ установки значения интервала - например:
public class MyTimer : ITimer {
Timer timer;
// implement ITimer member
public int Interval {
get { return timer.Interval; }
set { timer.Interval = value; }
}
}
Если интерфейс не определилВ этом свойстве нет способа получить доступ к свойствам инкапсулированного таймера за пределами вашего управляемого API (за исключением, может быть, путем отражения ...)
Надеюсь, это поможет.