C# FastMember和ExpandooObject错误

C# FastMember和ExpandooObject错误,c#,dynamic,reflection,expandoobject,fastmember,C#,Dynamic,Reflection,Expandoobject,Fastmember,我不确定它是否受支持,但我正在尝试让fastmember为我提供动态ExpandooObject(使用下面的代码)的类型信息,我得到了错误: System.NotSupportedException:不支持指定的方法。 在FastMember.TypeAccessor.GetMembers()上 在System.Dynamic.UpdateDelegates.UpdateAndExecute1[T0,TRet](调用站点,T0 arg0) 匿名动态类型的第二个测试可以正常工作,但由于某些原因,它

我不确定它是否受支持,但我正在尝试让fastmember为我提供动态
ExpandooObject
(使用下面的代码)的类型信息,我得到了错误:

System.NotSupportedException:不支持指定的方法。 在FastMember.TypeAccessor.GetMembers()上 在System.Dynamic.UpdateDelegates.UpdateAndExecute1[T0,TRet](调用站点,T0 arg0)

匿名
动态
类型的第二个测试可以正常工作,但由于某些原因,它不适用于
ExpandoObject
。这有可能吗?我可以通过使用
ExpandoObject
dictionary实现想出一个替代解决方案,如果不是的话,那么最好对所有内容都使用相同的代码

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();

    }
}

[测试是Xunit2]

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


fastmember的抽象和隔离对代码库也有好处。

您有替代实现的实现吗?@billybob我不需要手动,但是如果您强制转换到
(IDictionary)ExpandoObject
,您只需迭代键和值就可以了,这还不算太糟糕。因为ExpandoObject实现了IDictionary,应该很快。或者至少在大多数情况下足够快。