avd*_*per 0 c# xunit dynamic fluent-assertions
我使用 XUnit 和 c Sharp 中的 fluxassertions 进行单元测试。下面是我获取动态类型、将动态对象转换为该动态类型并尝试进行断言的地方:
var dynamicType = Type.GetType(...);
dynamic? myObject = JsonSerializer.Deserialize(myJSONData, dynamicType);
myObject!.Products!.Should().NotBeNull();
Run Code Online (Sandbox Code Playgroud)
如果我调试它, myObject 确实具有所需的属性和值,但是 c Sharp 和 fluenceassertion 会抛出此错误:
Microsoft.CSharp.RuntimeBinder.RuntimeBinderException : 'xxxxx.Products' does not contain a definition for 'Should'
Run Code Online (Sandbox Code Playgroud)
是否可以进行比较或者我错过了什么?
这是 .NET 中的一个限制。它不支持dynamic对象的扩展方法。
解决方法是强制转换myObject为object,以便Should可以在编译时确定 的适当重载。
一些相关问题: