Created
June 10, 2013 19:59
-
-
Save TheXenocide/5751755 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
delegate void SignalHandler(object, SignalEventArgs); | |
delegate void SignalErrorHandler(object, SignalErrorEventArgs); | |
interface ISignalRecipient { | |
void ProcessSignal(object sender, SignalEventArgs e); | |
void ProcessError(object sender, SignalErrorEventArgs e); | |
} | |
interface ISignalSource { | |
event SignalHandler SignalOccurred; | |
event SignalErrorHandler ErrorOccurred; | |
// the following is simply to demonstrate an alternative below: | |
void RegisterSignalRecipient(ISignalRecipient recipient); | |
} | |
class SampleSignalSource : ISignalSource | |
{ | |
public event SignalHandler SignalOccurred; | |
public event SignalErrorHandler ErrorOccurred; | |
// not typical, just an example of usage | |
private event SignalHandler PrivateSignalOccurred; | |
private event SignalErrorHandler PrivateSignalErrorOccurred; | |
public ContextAwareSignalSource() | |
{ | |
foreach (var recipient in GlobalSpot.AllRecipients) | |
{ | |
// just some random example logic | |
if (recipient is ISignalRecipient) | |
{ | |
this.SignalOccured += recipient.ProcessSignal; | |
this.ErrorOccurred += recipient.ProcessError; | |
// your example would produce the following: | |
//this.SignalOccurred += recipient; | |
//this.ErrorOCcurred += recipient; | |
// to me the above code implies the same exact thing will | |
// happen for signals and errors. | |
// alternatively this could leverage the register approach | |
// to allow initial wireup and dynamic additions later | |
RegisterSignalRecipient(recipient); | |
} | |
} | |
} | |
public void RegisterSignalRecipient(ISignalRecipient recipient) | |
{ | |
this.PrivateSignalOccurred += recipient.ProcessSignal; | |
this. | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment