Betrachten Sie die folgende Schnittstelle:Kann/sollte ich ein Mocking-Framework verwenden, um Ereignisse dynamisch zu einer Klasse hinzuzufügen?
public interface IMyCallback
{
void SomeEvent(int someArg);
}
, die den Vertrag für einen WCF-Callback ist die „Ereignisse“ von einem WCF-Dienst wird empfangen. Meine Implementierung für diese Schnittstelle sieht wie folgt aus
public class MyCallback : IMyCallback
{
void IMyCallback.SomeEvent(int someArg)
{
OnSomeEvent(someArg);
}
protected virtual void OnSomeEvent(int someArg)
{
EventHandler<SomeEventArgs> handler = this.SomeEvent;
if (handler != null)
{
handler(this, new SomeEventArgs(someArg));
}
}
public event EventHandler<SomeEventArgs> SomeEvent;
}
, die mir erlaubt, den Rückruf zu instanziiert und die Someevent Ereignis in meinem Client-Code einhaken. Immer wenn der Server meinen Rückruf aufruft, erhalte ich ein einfaches altes .NET-Ereignis. Alles funktioniert super.
Hier kommt die Frage: Ich möchte eine Factory-Klasse schreiben, die Schaffung dieser Rückruf zu automatisieren, damit ich leicht wiederverwenden, diesen Ansatz in allen meinen Projekten und mit jeder Schnittstelle. Die Fabrik würde wie folgt aufgerufen werden:
var myCallback = CallbackFactory.CreateCallback<IMyCallback>();
kann/sollte ich einen Mockframework verwenden dynamisch diese Klasse zu erstellen, oder sollte ich den sauren Apfel beißen und emittieren IL direkt? Oder sollte ich einfach jede Implementierung codieren? Oder gibt es einen anderen Ansatz, an den ich nicht denke?