Я думаю , что код пытается сделать, это сказать "есть ли у него еще идентификатор", то есть "временный" объект может (если я правильно прочитал намерения кода) быть тем, который не являетсяпока что сохраняется в БД.Тогда равенство определяется как:
- , если оно имеет идентификатор, соответствует ли оно?(даже для разных экземпляров одного и того же типа)
- если у него нет идентификатора, это один и тот же экземпляр объекта (ссылка)
к сожалению, реализация выглядит совершенно неработающей,поскольку Equals(ID, default(T))
не имеет смысла, когда T
является чем-то совершенно другим (a BusinessObject<T>
) - следовательно, default(T)
всегда будет null
, а ID
будет никогда будет null
(этоне обнуляется).Так что ничто никогда не будет сообщать о переходных процессах.
Кроме того, этот код:
if (null == other || !GetType().IsInstanceOfType(other))
является чрезвычайно неэффективным.Я подозреваю, что что-то, связанное с as
, было бы гораздо предпочтительнее, но опять-таки: код выглядит настолько ... замученным ... что мне не хочется переоценивать намерения.