C # Как выставить события в DLL - PullRequest
0 голосов
/ 30 августа 2018

У меня есть DLL, которая должна предоставить «подписку на событие», чтобы приложение, использующее мою DLL, могло подписаться на определенное событие для получения данных. (Сама DLL подписывается на событие из SDK) Я довольно новичок в событиях, поэтому, пожалуйста, будьте осторожны со мной и объясните.

У меня есть DLL, которая выглядит, например, так:

internal class BaseClass
{
}
internal Class DerivedClass : BaseClass, InterfaceClass
{
  public event TrackingEventHandler NewTrackingEventObservations; 
  public delegate void TrackingEventHandler(Object sender, TrackingEventArgs e);
}

В моем интерфейсе я хочу выставить делегата TrackingEventHandler.

Интерфейс:

public interface InterfaceClass
{
  event TrackingEventHandler NewTrackingEventObservations; // <- Error: TrackingEventHandler is less accessable then the field NewTrackingEventObservations
}

Как я могу исправить эту проблему?

Большое спасибо!

1 Ответ

0 голосов
/ 30 августа 2018

Ошибка, которую вы получаете, заключается в том, что TrackingEventHandler содержится в классе internal (доступном только для файлов в той же сборке, см. Эту ссылку ), но интерфейс, который вы ' пытаюсь разоблачить это public. Вы можете сделать открытый класс открытым или определить TrackingEventHandler вне этого класса (его не нужно указывать в определении класса).

Вот пример определения его вне класса:

namespace someNamespace
{

    public delegate void TrackingEventHandler(Object sender, TrackingEventArgs e);

    internal Class BaseClass{ }
    internal Class DerivedClass : BaseClass, InterfaceClass
    {
      public event TrackingEventHandler NewTrackingEventObservations;
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...