FastMember and ExpandoObject error



我不确定它是否支持,但我正试图让fastmember给我动态ExpandoObject的类型信息(使用下面的代码),我得到错误:

系统。NotSupportedException:指定的方法不支持。在FastMember.TypeAccessor.GetMembers ()在System.Dynamic.UpdateDelegates。updateanddexecute1 [T0,TRet](CallSite site, T0 arg0)

匿名dynamic类型的第二个测试工作得很好,但由于某种原因,它不能与ExpandoObject一起工作。这是可能的吗?我可以通过使用ExpandoObject字典实现来想到另一种解决方案,如果不是,那么为所有内容使用相同的代码会很好。

public class FastMemberTest
{
    [Fact]
    public void GetsMembersOfExpandoObject()
    {
        dynamic dyn = new ExpandoObject();
        dyn.Item1 = 1;
        dyn.Item2 = "Testing";
        var typeAccessor = TypeAccessor.Create(dyn.GetType());
        var members = typeAccessor.GetMembers();
        members.Should().NotBeNull();
    }
    [Fact]
    public void GetsMembersOfDynamicType()
    {
        dynamic dyn = new
        {
            Item1 = 1,
            Item2 = "Testing"
        };
        var typeAccessor = TypeAccessor.Create(dyn.GetType());
        var members = typeAccessor.GetMembers();
    }
}
[Test is Xunit2]

我最终编写了一个类,它模仿了快速成员行为,但将expandooobject强制转换为一个字典并使用它。然后仅在传递expandoobject时使用此方法,否则使用fastmember。工作良好,替代实现实际上非常简单。

快速成员的抽象和隔离对代码库也有好处。

相关内容

  • 没有找到相关文章

最新更新