У меня есть класс, который имеет некоторые свойства. И я хочу что-то, что вычисляет показатель из этих свойств. Так как это тривиальная задача (некоторые дополнения и деления, но ничего впечатляющего).Изменение свойства в методе - любые побочные эффекты?
Так что, естественно, возникает вопрос: «Когда использовать свойство с некоторым кодом в геттере, а также когда использовать функцию?» И that question was already answered.
Теперь я задаюсь вопросом об одном: если - против всех ожиданий - мне когда-либо понадобилось сделать этот Геттер настолько сложным, что он должен быть функцией (например, потому что мне нужно поместить данные или потому, что они могут бросать исключение или что-то еще), легко ли изменить свойство в метод?
Конечно, это действительно кажется тривиальным, просто изменяя
public double Score {
get {
return Math.Round(A + B/C * D,3);
}
}
в
public double Score(){
return Math.Round(A + B/C * D,3);
}
Но я задаюсь вопросом: Есть ли какие-либо побочные эффекты? Разве что-нибудь сломается при смене вещей, подобных этому? Я могу только увидеть это как возможную проблему, когда задействован Reflection, но что в ситуациях, когда у меня есть 2 Assemblies - тот, который определяет класс и тот, который использует этот класс, и только меняет тот, который содержит класс, не перекомпилируя пользователя сборка. Это возможный источник «странных ошибок, которые почти невозможно отслеживать», или вполне безопасно изменять свойства на методы?
Спасибо. Я просто боялся, что есть еще одна скрытая черная магия. Принимая этот ответ, потому что он более сложный, но он поддерживает оба. – 2008-11-17 20:30:10