Модераторы: Partizan, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> описание события в абстрактном классе 
V
    Опции темы
RastaDja
Дата 4.7.2011, 15:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 337
Регистрация: 1.11.2010

Репутация: нет
Всего: 5



   Доброго времени суток!
   Есть проект, в котором несколько классов унаследовано от абстрактного класса. Классы, которые унаследованы от абстрактного класса - должны генерить сообщение об завершении текущего измерения.
   Сейчас всё это выглядит так
Код

public class ComleatedEventArgs : EventArgs
{
   private Double res;
   public ComleatedEventArgs(Double resours)
   {
      this.res = resours;
   }
   public Double Resours
   {
      get
      {
         return res;
      }
   }
}

public delegate void ComleatedEventHandler(object sender, ComleatedEventArgs e);

public class MyClass : AbstractClass
{
   public event ComleatedEventHandler ReadCompleated;
   //...
    
   private void OnTimedEvent(object source, ElapsedEventArgs e){
      //...
      ComleatedEventArgs ee = new ComleatedEventArgs(0.19);
      OnComleat(ee);
   }
        
   protected virtual void OnComleat(ComleatedEventArgs e)
   {
      if (ReadCompleated != null)
      {
         ReadCompleated(this, e);    //  посылаем сообщение
      }
   }
}

а вот абстрактный класс
Код

public abstract class AbstractClass
{
   public abstract String Name { get; set; }
   //...
}


подскажите как в абстрактном классе описать событие? Это нужно, чтоб все унаследованные классы генерили такое сообщение.


--------------------
The more closely you look at one thing, the less closely can you see something else.
PM MAIL   Вверх
Rohoss
Дата 4.7.2011, 15:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Начальник интернета
***


Профиль
Группа: Завсегдатай
Сообщений: 1308
Регистрация: 9.10.2006
Где: Matrix

Репутация: 2
Всего: 18



Цитата(RastaDja @  4.7.2011,  15:20 Найти цитируемый пост)
подскажите как в абстрактном классе описать событие? Это нужно, чтоб все унаследованные классы генерили такое сообщение. 

да так как и в обычном. в чём проблема то?


--------------------
Файловый менеджер Explorer.Net скачать  video
PM ICQ   Вверх
RastaDja
Дата 4.7.2011, 15:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 337
Регистрация: 1.11.2010

Репутация: нет
Всего: 5



Цитата(Rohoss @  4.7.2011,  16:41 Найти цитируемый пост)
да так как и в обычном. в чём проблема то? 

проблема в том, что я не понимаю как это сделать - в абстрактном классе нельзя ведь делать реализацию.
Rohoss, подскажите как это сделать, напишите пожалуйста пример.


--------------------
The more closely you look at one thing, the less closely can you see something else.
PM MAIL   Вверх
Rohoss
Дата 4.7.2011, 16:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Начальник интернета
***


Профиль
Группа: Завсегдатай
Сообщений: 1308
Регистрация: 9.10.2006
Где: Matrix

Репутация: 2
Всего: 18



Цитата(RastaDja @  4.7.2011,  15:45 Найти цитируемый пост)
проблема в том, что я не понимаю как это сделать - в абстрактном классе нельзя ведь делать реализацию.

Это ещё почему?

Так чтоли?
Код

public class ComleatedEventArgs : EventArgs
    {
        private Double res;
        public ComleatedEventArgs(Double resours)
        {
            this.res = resours;
        }
        public Double Resours
        {
            get
            {
                return res;
            }
        }
    }
    public delegate void ComleatedEventHandler(object sender, ComleatedEventArgs e);

    public class MyClass : AbstractClass
    {

        public override String Name { get; set; }
    }

    public abstract class AbstractClass
    {
        public abstract String Name { get; set; }
        
        public event ComleatedEventHandler ReadCompleated;

        private void OnTimedEvent(object source, ElapsedEventArgs e)
        {
            ComleatedEventArgs ee = new ComleatedEventArgs(0.19);
            OnComleat(ee);
        }

        protected virtual void OnComleat(ComleatedEventArgs e)
        {
            if (ReadCompleated != null)
            {
                ReadCompleated(this, e);    //  посылаем сообщение
            }
        }

    }



--------------------
Файловый менеджер Explorer.Net скачать  video
PM ICQ   Вверх
RastaDja
Дата 4.7.2011, 16:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 337
Регистрация: 1.11.2010

Репутация: нет
Всего: 5



Rohoss, вот так кажись работает
Код

public abstract class AbstractClass
    {
        public abstract String Name { get; set; }
        public event ComleatedEventHandler ReadCompleated;
        protected virtual void OnComleat(ComleatedEventArgs e)
        {
            if (ReadCompleated != null)
            {
                ReadCompleated(this, e);    //  посылаем сообщение
            }
        }
    }

Спасибо, Вам +  smile 


--------------------
The more closely you look at one thing, the less closely can you see something else.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема »


 




[ Время генерации скрипта: 0.0988 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.