C# 如何将期望中的参数传递给Rhino Mocks中的返回值?

C# 如何将期望中的参数传递给Rhino Mocks中的返回值?,c#,rhino-mocks,C#,Rhino Mocks,我想模拟这个界面: interface IA { IB DoSomething(IC arg) } 以模拟如下实现的方式: class A : IA { public IB DoSomething(IC arg) { return new B(arg); } } MockRepository.GenerateMock<IA>().Expect(x => x.DoSomething(null)).IgnoreArguments().Callback<IC&g

我想模拟这个界面:

interface IA {
  IB DoSomething(IC arg)
}
以模拟如下实现的方式:

class A : IA {
    public IB DoSomething(IC arg) { return new B(arg); }
}
MockRepository.GenerateMock<IA>().Expect(x => x.DoSomething(null)).IgnoreArguments().Callback<IC>(arg => new B(arg))
我该怎么做? 从其他类似的问题来看,应该是这样的:

class A : IA {
    public IB DoSomething(IC arg) { return new B(arg); }
}
MockRepository.GenerateMock<IA>().Expect(x => x.DoSomething(null)).IgnoreArguments().Callback<IC>(arg => new B(arg))
MockRepository.GenerateMock().Expect(x=>x.DoSomething(null)).IgnoreArguments().Callback(arg=>new B(arg))
但我不能让它工作。我正在使用RhinoMocks 3.6

var mock=MockRepository.GenerateMock();
var mock = MockRepository.GenerateMock<IA>();
mock
  .Stub(x => x.DoSomething(Arg<IC>.Is.Anything)
  // return a new instance of B each time
  .WhenCalled(call => call.ReturnValue = new B((IC)call.Arguments[0]))
  // make rhino mock validation happy
  .Return(null);
嘲弄 .Stub(x=>x.DoSomething(Arg.Is.Anything) //每次返回一个新的B实例 .whenCall(call=>call.ReturnValue=new B((IC)call.Arguments[0])) //让犀牛开心 .返回(空);
以下是一个类型安全示例:

var mockA = MockRepository.GenerateMock<IA>();
mockA
    .Stub(x => x.DoSomething(Arg<IC>.Is.Anything))
    .Do((Func<IC, IB>)(arg => new B(arg)))
    .Return(null);
var mockA=MockRepository.GenerateMock();
莫卡
.Stub(x=>x.DoSomething(Arg.Is.Anything))
.Do((Func)(arg=>new B(arg)))
.返回(空);

这很有效,谢谢!有没有什么类型安全的方法可以不用显式转换就可以做到这一点?谢谢,虽然不太理想,但还是稍微好一点