Здравствуйте, Mab, Вы писали:
Mab>Используйте теги c# и /с# для выделения кода на этом языке. Еще стоит отучаться писать C перед именами классов -- naming guidelines в .NET другие.
Спасибо — учту
_CT>>Имею я право сделать так:
_CT>>_CT>>public class CDBCRM
_CT>>{
_CT>> public event ConnectionEventHandler ConnectionStateChange;
_CT>>}
_CT>>// и соответственно не
_CT>>CDBCRM.ConnectionStateChange += new CDBCRM.ConnectionEventHandler(frmMain.OnCRMStateChange);
_CT>>//a
_CT>>m_DBCRM.ConnectionStateChange += new CDBCRM.ConnectionEventHandler(frmMain.OnCRMStateChange);
_CT>>
_CT>>т.к. хочу обрабатывать это событие не на уровне типа, а на уровне объекта класса?
Mab>Событие было объявлено статическим. Поэтому второй способ даже не скомпилируется. Что подразумевается под "на уровне объекта класса"?
Во втором варианте оно уже не было статическим
Mab>Вообще, зачем было делать событие статическим?
В примерах видел. Затрудняюсь ответить
Mab>[Ужас поскипан]
Mab>Если нужно делегировать событие, то делают так:
Mab>Mab>public static event ConnectionEventHandler ConnectionStateChange
Mab>{
Mab> add { m_Connection.ConnectionStateChange += value; }
Mab> remove { m_Connection.ConnectionStateChange -= value; }
Mab>}
Mab>
Не компилируется. App.CDBCRM.m_Connection' denotes a 'field' where a 'class' was expected
Mab>Кстати, зачем в CDBCRM был объявлен тип делегата, ничем не отличающийся от существующего, не ясно.
Где?
Весь и прикол, чтобы делегировать обработчик события OnStateChange стандартного класса (типа SQLConnection) наверх, не открывая при этом самого m_Connection.
Или я не догоняю
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>