Академ. вопр.
От: Аноним  
Дата: 17.11.10 05:43
Оценка:
Работая с классами SqlCommand и OdbcCommand, обратил внимание на одно отличие в работе Intellisence

У класс SqlCommand метод Clone() виден сразу, а у OdbcCommand только после приведения его к ICloneable.

Как они этого добились? Для чего это сделано?
Re: Академ. вопр.
От: Sinix  
Дата: 17.11.10 05:54
Оценка:
Здравствуйте, Аноним, Вы писали:

А>У класс SqlCommand метод Clone() виден сразу, а у OdbcCommand только после приведения его к ICloneable.

А>Как они этого добились?
OdbcCommand реализует метод Clone явно.
object ICloneable.Clone() { ... }


SqlCommand вдобавок реализует типизированный вариант.
public SqlCommand Clone() { ... }


*В теории могли извратиться вот так:
[EditorBrowsable(EditorBrowsableState.Never)]
public void Clone() { ... }


А>Для чего это сделано?

а) OdbcCommand посчитали, что метод не нужен
б) реализация Clone у OdbcCommand имеет побочные эффекты и не предназначена для широкого использования — решили подстраховаться.
Re: Академ. вопр.
От: Sinix  
Дата: 17.11.10 05:59
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Для чего это сделано?

UPD. Проверил рефлектором — реализация Clone однотипная, но код явно писался разными командами или в разное время. Подозреваю, рационального объяснения нет.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.