你可以想象用Rhino.Mocks做到這一點。
var code_builder = new StringBuilder();
var myobj = MockRepository.GenerateStub<IMyObj>();
myobj.Stub(x => x.MethodA(Arg<int>.Is.Anything))
.WhenCalled(x => code_builder.AppendLine(
string.Format("myobj.MethodA({0});", x.Arguments[0]));
myobj.Stub(x => x.MethodB(Arg<string>.Is.Anything, Arg<bool>.Is.Anything))
.WhenCalled(x => code_builder.AppendLine(
string.Format("myobj.MethodB({0}, {1});", x.Arguments[0], x.Arguments[1]));
一旦你記錄所有的值,你已經得到了在StringBuilder
所有來電,你可以與你會做什麼。
創建一個接口的新實現可能實際上是少一些工作,而該接口在每種方法中以類似的方式構建代碼。您可能需要實現函數以便用戶完成會話,在這種情況下,您可以創建一個派生自裝飾或裝飾您的接口實現的類,並在轉發呼叫時添加此代碼構建功能到/從「正常」對象。
來源
2011-01-13 21:01:57
Jay
謝謝,但這需要爲每種方法編寫`string.Format`,並且該接口太大而無法手工完成。 – Constantin 2011-01-13 21:43:08