2010-02-22 6 views
0

J'écris une bibliothèque de classes qui sera utilisée par d'autres applications. Je l'écris en C# .NET. J'ai un problème avec le déclenchement des événements à travers les classes. Voici ce que je dois faire ...Comment déclencher un événement entre classes?

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); 
    } 

} 

Ensuite, dans l'application qui utilise la bibliothèque de classes que je vais faire ...

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

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

Répondre

1

Probablement la meilleure option est d'ajouter une méthode à ClassLibrary ce qui soulève l'événement ... à savoir

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

Puis, en OtherClass, il suffit d'appeler cette méthode de ClassLibrary.

Une autre option consiste à descendre la route de réflexion pour déclencher l'événement.

Questions connexes