2

サポートされているかどうかはわかりませんが、動的の型情報を取得するために fastmember を取得しようとしてExpandoObjectいます (以下のコードを使用)。エラーが発生します。

System.NotSupportedException: 指定されたメソッドはサポートされていません。FastMember.TypeAccessor.GetMembers() で System.Dynamic.UpdateDelegates.UpdateAndExecute1 [T0,TRet] (CallSite サイト、T0 arg0)

匿名dynamic型の 2 番目のテストは問題なく動作しますが、何らかの理由で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();

    }
}

【テストはXunit2】

4

1 に答える 1