Что вы подразумеваете под "prop s2 должен быть установлен только когда s1 становится 0" - что вы хотите, чтобы он делал, когда s1 не 0? Возможно, вы ищете типы значений, допускающие значение NULL, где в некоторых случаях s1 возвращает нулевое значение?
Я должен сказать, я думаю, что это довольно запутанный тип. У него нет реального состояния - это фактически просто набор статических свойств. Любая причина не реализовывать это как набор статических свойств, например в CurrentDateTime
классе? Или просто использовать DateTime.Now
? Обратите внимание, что если вы спросите свою структуру для набора значений, по одному за раз, это может очень хорошо дать вам противоречивые результаты с течением времени. Например, предположим, что время 1:59:59, и вы звоните s
, затем m
, затем h
- вы можете получить 59, 59, 2, когда текущее время переходит от 1:59: С 59 до 2:00:00 между двумя последними звонками. Если вы возьмете значение DateTime.Now
просто один раз и запросите его для всех его свойств, вы получите согласованное представление.