Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/260.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# FakeiTesy:在返回匿名类型时伪造返回值_C#_Fakeiteasy - Fatal编程技术网

C# FakeiTesy:在返回匿名类型时伪造返回值

C# FakeiTesy:在返回匿名类型时伪造返回值,c#,fakeiteasy,C#,Fakeiteasy,我有一个功能: TResult ShowDialogWindow<TViewModel, TView, TResult>(Func<TViewModel> viewModelActivator, Func<TViewModel, TView> viewActivator, Func<TViewModel, TView, TResult> dialogResultFunc) 我已经看过一些预先存在的答

我有一个功能:

TResult ShowDialogWindow<TViewModel, TView, TResult>(Func<TViewModel> viewModelActivator,
            Func<TViewModel, TView> viewActivator,
            Func<TViewModel, TView, TResult> dialogResultFunc)
我已经看过一些预先存在的答案和讨论,但它们涉及匹配参数,而不是返回类型:

有什么建议吗


另外,我目前的解决办法是避免返回匿名类型。

不幸的是,没有简单的方法可以做到这一点。每个程序集定义匿名类型;换句话说,如果在测试程序集中定义的匿名类型与在测试程序集中定义的匿名类型相同,那么它实际上将不是相同的类型

您可能可以使用
A.CallTo(dialogService).Where(call=>…)
来做一些事情,但这将是一件痛苦的事情,因为您必须放弃强类型,而改用反射


最好不要使用匿名类型;而且是一个很好的轻量级替代品。

不幸的是,没有简单的方法可以做到这一点。每个程序集定义匿名类型;换句话说,如果在测试程序集中定义的匿名类型与在测试程序集中定义的匿名类型相同,那么它实际上将不是相同的类型

您可能可以使用
A.CallTo(dialogService).Where(call=>…)
来做一些事情,但这将是一件痛苦的事情,因为您必须放弃强类型,而改用反射

最好不要使用匿名类型;并且是一个很好的轻量化替代品

_dialogService.ShowDialogWindow(() => new ViewModel(),
  viewModel =>  new View(viewModel),
  (viewModel, view) => new { view.DialogResult, view.SomeOtherInfo });