Árvores de expressão com parâmetro dinâmico

Eu quero converter isso:

Func<dynamic, object> myFunc = t => return t.Name + " " + t.Surname;

Em uma árvore de expressão.

O que eu inventei é o seguinte:

ParameterExpression target = ExpressionParameter(typeof(dynamic), "target");
ParameterExpression result = ExpressionParameter(typeof(object), "result");
BlockExpression block = Expression.Block(
     new [] { result },
     Expression.Assign(
           result,
           Expression.Add(
                 Expression.Add(
                      Expression.Property(target, "Name"),
                      Expression.Constant(" ", typeof(string))
                 ),
                 Expression.Property(target, "Surname")
           )
     )
);
Func<dynamic, object> myFunc = Expression.Lambda<dynamic, object>>(block, target).Compile();

No entanto, o compilador não gostatypeof(dynamic), e eu meio que entendi.dynamic não é um tipo, é umobject em essência.

Então eu comecei a mudar oParameterExpression:

ParameterExpression target = ExpressionParameter(typeof(object), "target");

O código agora é compilado, mas há um problema no tempo de execução.

Estou tentando obter o valor da propriedadeName dotarget, que pode ter sentido se o objeto foidynamic.

Mas desdetarget é considerado do tipoobject, a expressão lança um erro dizendo-meName não existe como uma propriedade.

Existe uma expressão para buscar uma propriedade dinâmica?

questionAnswers(1)

yourAnswerToTheQuestion