2016-09-12 6 views
1

私はそのサポートされている場合はわからないが、私は(以下のコードを使用して)動的なExpandoObjectのための情報を入力し、私を与えることをfastmember取得しようとしていると私はエラーを取得:FastMemberとExpandoObjectエラー

System.NotSupportedException: Specified method is not supported. at FastMember.TypeAccessor.GetMembers() at System.Dynamic.UpdateDelegates.UpdateAndExecute1[T0,TRet](CallSite site, T0 arg0)

匿名の2番目のテスト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(); 

    } 
} 

[テストXunit2ある]

答えて

0

私は速いメンバーの行動を模倣したがIDictionaryのにexpandoobjectをキャストして、それを使用してクラスを書いてしまいました。次に、fastmemberを使用してexpandoobjectが渡された場合にのみこれを使用します。うまく動作し、代わりの実装は実際にはかなり簡単です。

fastmemberの抽象と分離はコードベースにも適しています。

関連する問題