FastMember 和 ExpandoObject 错误
FastMember and ExpandoObject error
我不确定它是否受支持,但我试图让 fastmember 为我提供动态 ExpandoObject
的类型信息(使用下面的代码),但我收到错误消息:
System.NotSupportedException: Specified method is not supported.
at FastMember.TypeAccessor.GetMembers()
at System.Dynamic.UpdateDelegates.UpdateAndExecute1[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();
}
}
[测试是 Xunit2]
我最终写了一个 class,它模仿快速成员行为,但将 expandoobject 转换为 IDictionary 并使用它。然后仅在传递 expandoobject 时使用它,否则使用 fastmember。工作正常,替代实现实际上非常简单。
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)
匿名 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]
我最终写了一个 class,它模仿快速成员行为,但将 expandoobject 转换为 IDictionary 并使用它。然后仅在传递 expandoobject 时使用它,否则使用 fastmember。工作正常,替代实现实际上非常简单。
fastmember 的抽象和隔离对代码库也有好处。