Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/291.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/20.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# 如何模拟获取或返回Span的方法<;T>;_C#_.net_Mocking - Fatal编程技术网

C# 如何模拟获取或返回Span的方法<;T>;

C# 如何模拟获取或返回Span的方法<;T>;,c#,.net,mocking,C#,.net,Mocking,我们一直在使用moq,它严重依赖于表达式树和reflection.emit。但是Span不允许出现在表达式树中,所以不能用它来模拟获取或返回Span的方法 我们一直在解决这个问题,通过自己实现接口手动创建模拟。但这很费时,也远远不够理想 如何模拟接受或返回Span的方法?使用Memory而不是Span@aepot,尽管这是一种有效的解决方法,我的代码不需要内存,仅仅因为模仿就在我的设计上强制使用内存似乎是错误的。你有没有检查过在即将到来的Moq 5中使用新的特技机制是否可行?@KlausGütt

我们一直在使用moq,它严重依赖于表达式树和reflection.emit。但是Span不允许出现在表达式树中,所以不能用它来模拟获取或返回Span的方法

我们一直在解决这个问题,通过自己实现接口手动创建模拟。但这很费时,也远远不够理想


如何模拟接受或返回Span的方法?

使用
Memory
而不是
Span
@aepot,尽管这是一种有效的解决方法,我的代码不需要内存,仅仅因为模仿就在我的设计上强制使用内存似乎是错误的。你有没有检查过在即将到来的Moq 5中使用新的特技机制是否可行?@KlausGütter我看了一下,但没有发布,今年的开发只暂停了一次提交,自2月5日以来没有任何进展,此外,这些文档几乎不存在,因此试图弄清楚它是否有帮助几乎是不可能的。我正在寻找我现在可以使用的东西。不太好,但是您可以创建一个适配器类来实现所讨论的接口,并使用
Span
参数将该方法委托给一个新的虚拟方法,例如,它具有
T[]
。然后创建一个
Mock
并模拟新的虚拟方法。