Ошибка FastMember и ExpandoObject
Я не уверен, поддерживается ли он, но я пытаюсь получить fastmember, чтобы дать мне информацию о типе для динамического ExpandoObject
(используя код ниже), и я получаю ошибку:
System.NotSupportedException: указанный метод не поддерживается. в FastMember.TypeAccessor.GetMembers() в System.Dynamic.UpdateDelegates.UpdateAndExecute1[T0,TRet](сайт CallSite, 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]
1 ответ
Я закончил тем, что написал класс, который имитировал поведение быстрого члена, но преобразовал объект расширения в IDictionary и использовал его. Затем, используя это только тогда, когда расширенный объект был передан иначе, используя fastmember. Работает нормально, и альтернативная реализация на самом деле довольно проста.
Абстракция и изоляция fastmember также хороши для кодовой базы.