Как вы запускаете событие между классами? - PullRequest
0 голосов
/ 22 февраля 2010

Я пишу библиотеку классов, которая будет использоваться другими приложениями.Я пишу это в C # .NET.У меня проблема с запуском событий между классами.Вот что мне нужно сделать ...

public class ClassLibrary
{
    public event EventHandler DeviceAttached;

    public ClassLibrary()
    {
        // do some stuff
        OtherClass.Start();
    }
}

public class OtherClass : Form
{
    public Start()
    {
        // do things here to initialize receiving messages
    }

    protected override void WndProc (ref message m)
    {
       if (....)
       {
          // THIS IS WHERE I WANT TO TRIGGER THE DEVICE ATTACHED EVENT IN ClassLibrary
          // I can't seem to access the eventhandler here to trigger it.
          // How do I do it?

       }
       base.WndProc(ref m);
    }

}

Затем в приложении, которое использует библиотеку классов, я сделаю это ...

public class ClientApplication
{
    void main()
    {
       ClassLibrary myCL = new ClassLibrary();
       myCL.DeviceAttached += new EventHandler(myCl_deviceAttached);
    }

    void myCl_deviceAttached(object sender, EventArgs e)
    {
         //do stuff...
    }
}

1 Ответ

1 голос
/ 23 февраля 2010

Вероятно, самый простой вариант - добавить метод к ClassLibrary, который вызывает событие ... т.е.

internal void RaiseDeviceAttached(object sender, EventArgs e)
{
  if (DeviceAttached != null) DeviceAttached(sender, e);
}

Затем, в OtherClass, просто вызовите этот метод ClassLibrary.

Другой вариант - пройти по маршруту отражения, чтобы вызвать событие.

...