powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Можно-ли объявить событие в интерфейсе
10 сообщений из 10, страница 1 из 1
Можно-ли объявить событие в интерфейсе
    #35513037
intrf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
при попытке скомпилировать этот код

Код: plaintext
1.
2.
3.
4.
public interface MyInterface
{
  delegate void MyEventDelegate();
  event MyEventDelegete MyEvent;
}

компилятор ругается, что нельзя объвлять типы в интерфейсах. Неужели никак нельзя объявить тут событие ?
...
Рейтинг: 0 / 0
Можно-ли объявить событие в интерфейсе
    #35513057
winsky!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
тут событие объявить можно, делегат нельзя.
Код: plaintext
1.
2.
3.
4.
5.
public delegate void MyEventDelegate();

        public interface MyInterface
        {
            event MyEventDelegate ev;
        }
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Можно-ли объявить событие в интерфейсе
    #39776920
Фотография anc32
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
winsky!,

а какой обходной путь?
...
Рейтинг: 0 / 0
Можно-ли объявить событие в интерфейсе
    #39776921
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
anc32а какой обходной путь?Обходной путь обходного пути, который предложил winsky?
требуется-то что?
...
Рейтинг: 0 / 0
Можно-ли объявить событие в интерфейсе
    #39777076
Сон Веры Павловны
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
anc32а какой обходной путь?
Никакой.
C# language specification, §13.2 "Interface members"The members of an interface must be methods, properties, events, or indexers. An interface cannot contain constants, fields, operators, instance constructors, destructors, or types , nor can an interface contain static members of any kind.
А объявление делегата равносильно объявлению вложенного типа:
Код: c#
1.
2.
3.
4.
class Foo
{
  public delegate void Bar(string zot);
}


Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
.class private auto ansi beforefieldinit test2.Foo
  extends [mscorlib]System.Object
{
  .method public hidebysig specialname rtspecialname instance void .ctor () cil managed 
  {
      IL_0000: ldarg.0
      IL_0001: call instance void [mscorlib]System.Object::.ctor()
      IL_0006: nop
      IL_0007: ret
  }

  .class nested public auto ansi sealed Bar extends [mscorlib]System.MulticastDelegate
  {
      .method public hidebysig specialname rtspecialname instance void .ctor (
              object 'object',
              native int 'method'
          ) runtime managed 
      {
      }

      .method public hidebysig newslot virtual instance class [mscorlib]System.IAsyncResult BeginInvoke (
              string zot,
              class [mscorlib]System.AsyncCallback callback,
              object 'object'
          ) runtime managed 
      {
      }

      .method public hidebysig newslot virtual instance void EndInvoke (
              class [mscorlib]System.IAsyncResult result
          ) runtime managed 
      {
      }

      .method public hidebysig newslot virtual instance void Invoke (
              string zot
          ) runtime managed 
      {
      }
  }
}
...
Рейтинг: 0 / 0
Можно-ли объявить событие в интерфейсе
    #39777621
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Делегат это и есть тип, определяющий сигнатуру метода.
...
Рейтинг: 0 / 0
Можно-ли объявить событие в интерфейсе
    #39777646
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В интерфейсе можно объявлять только методы
Событие по сути есть 2 метода Add и Remove
Как и свойство Set и Get
...
Рейтинг: 0 / 0
Можно-ли объявить событие в интерфейсе
    #39778385
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вообще, свой делегат для события определять не надо. Для этого есть стандартный делегат EventHandler.
...
Рейтинг: 0 / 0
Можно-ли объявить событие в интерфейсе
    #39778554
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
anc32winsky!,

а какой обходной путь?

Какую задачу решаем? Обходной путь для Чего?
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Можно-ли объявить событие в интерфейсе
    #39939661
winsky!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
anc32,

через самару.
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Можно-ли объявить событие в интерфейсе
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]