考虑以下接口:
public interface IMyCallback
{
void SomeEvent(int someArg);
}
这是将从 WCF 服务接收“事件”的 WCF 回调的合同。我对此接口的实现如下所示
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;
}
这允许我在客户端代码中实例化回调并挂钩 SomeEvent 事件。每当服务器调用我的回调时,我都会收到一个普通的旧 .NET 事件。一切都很好。
问题来了:我想写一个工厂类来自动创建这个回调,所以我很容易在我的所有项目和任何接口中重用这种方法。工厂将被称为:
var myCallback = CallbackFactory.CreateCallback<IMyCallback>();
我可以/应该使用模拟框架来动态创建这个类,还是应该硬着头皮直接发出 IL?还是我应该只手动编写每个实现的代码?还是有另一种我没有想到的方法?