public void Test_With_Dynamic_Object()
        {
            dynamic myInstance = new ExpandoObject();
            myInstance.MyMethod = new Func<string>(() => "hello world");

            var binder = Binder.InvokeMember(
                CSharpBinderFlags.None,
                "MyMethod",
                null,
                this.GetType(),
                new[] { CSharpArgumentInfo.Create(CSharpArgumentInfoFlags.Constant, null) });

            var methodCallExpression = Expression.Dynamic(binder, typeof(object), Expression.Constant(myInstance));
            var expression = Expression.Lambda(methodCallExpression);

            Assert.AreEqual(myInstance.MyMethod(), expression.Compile().DynamicInvoke());
        }