C# Rhino模拟使用ref参数存根事件
我正在尝试从模拟对象调用事件。我是这样做的:C# Rhino模拟使用ref参数存根事件,c#,events,rhino-mocks,C#,Events,Rhino Mocks,我正在尝试从模拟对象调用事件。我是这样做的: importObject.Raise(x => x.RequestImportLevel += null, false, false, true, importLevel); 需要通过引用传递的最后一个参数。所以,我得到了一个例外 参数#4为System.Int16,但 应该是System.Int16& 我能做些什么来处理这件事 如果问题出在Rhino Mocks中-有没有其他框架完全支持这种开箱即用的功能?这个对象实现了一个接口,所以我刚刚
importObject.Raise(x => x.RequestImportLevel += null, false, false, true, importLevel);
需要通过引用传递的最后一个参数。所以,我得到了一个例外
参数#4为System.Int16,但
应该是System.Int16&
我能做些什么来处理这件事
如果问题出在Rhino Mocks中-有没有其他框架完全支持这种开箱即用的功能?这个对象实现了一个接口,所以我刚刚创建了一个伪类,让它从IEventWithRefParameter继承,并引入了一个函数,如
public virtual void RaiseRequestImportLevelEvent(bool hasYc, bool hasWc, bool hasDc, ref short chosenLevel)
{
if (RequestImportLevel != null)
{
RequestImportLevel(hasYc, hasWc, hasDc, ref chosenLevel);
}
}
现在我在测试中使用这个虚拟类的一个实例,当我想引发一个事件时,我只调用这个函数
这几乎不是一个干净的解决方案,但至少它起到了作用。有没有办法将事件更改为不需要ref参数?具有读/写属性的专用EventArgs可以轻松替换ref参数。不幸的是,不是。实际上,这是一个来自遗留COM组件的事件,无法将其更改为EventArgs