Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Общие вопросы по .NET и C# > Как создать объект типа EventHandler


Автор: cardinal1980 20.8.2007, 13:36
Итак имею:
Интерфейс:
Код

    [ExternalDataExchange]
    public interface IApproverChangeEventHandler
    {
        event EventHandler <RecensentEventArgs> listEvent2;
        private void onEvent(object scr, RecensentEventArgs args)
        {

        }
    }

    [Serializable]
    public class RecensentEventArgs : ExternalDataEventArgs
    {

        public RecensentEventArgs(Guid instanceId, SPItemEventProperties properties)
            : base(instanceId)
        {
            itemProperties = properties;
        }
        public SPItemEventProperties itemProperties;
    }

Непосредственно сам EventHandler:
Код

class onRecensentsChanged : SPItemEventReceiver, IApproverChangeEventHandler
    {

        private RecensentEventArgs rec;
        public override void ItemDeleted(SPItemEventProperties properties)
        {
            onItemUpdatedAddedDeleted(properties);
        }

        public override void ItemUpdated(SPItemEventProperties properties)
        {
            onItemUpdatedAddedDeleted(properties);
        }

        public override void ItemAdded(SPItemEventProperties properties)
        {
            onItemUpdatedAddedDeleted(properties);

        }

        private void onItemUpdatedAddedDeleted(SPItemEventProperties properties)
        {
            try
            {
                Guid g = new Guid();
                rec = new RecensentEventArgs(g, properties);
                listEvent2(this, rec);
            }
            catch (Exception ee)
            {
            }

        }

         #region IApproverChangeEventHandler Members

        public event EventHandler<RecensentEventArgs> listEvent2;

        #endregion
    }

Вопрос в следующем listEvent2 всегда == Null в общем оно и понятно я его не инициализирую.
Помогите пожалуйста как его инициализировать?
Где про это доходчиво написано?

Автор: Exception 20.8.2007, 14:12
Как появится обработчик -- создастся делегат.
Код
someObject.listEvent2 += new EventHandler<RecensentEventArgs> (this.myEventHandler);
Кстати, наличие делегата-приёмника событий надо проверять так:
Код
if (this.listEvent2 != null)
    this.listEvent2 (this, rec);
Тогда не придётся плодить try.. catch'и.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)