public void InvokeMethod()
{
DynamicObject dynobj = new DynamicObject();
ICommand body = new ReturnCommand(new DotExpression(new VariableExpression("this"), "Name"));
Function function = new Function(null, body);
dynobj.SetValue("Name", "Adam");
dynobj.SetValue("GetName", function);
object result = dynobj.Invoke("GetName", new object[] { });
Assert.IsNotNull(result);
Assert.IsInstanceOfType(result, typeof(string));
Assert.AreEqual("Adam", result);
}