object calc = GetCalculator(); Type calcType = calc.GetType(); object res = calcType.InvokeMember("Add", BindingFlags.InvokeMethod, null, new object[] { 10, 20 }); int sum = Convert.ToInt32(res);
有了dynamic,就可以把上面代碼簡化為:
dynamic calc = GetCalculator(); int sum = calc.Add(10, 20);
使用dynamic的好處在于,可以不去關心對象是來源于COM, IronPython, HTML DOM或者反射,只要知道有什么方法可以調用就可以了,剩下的工作可以留給runtime。下面是調用IronPython類的例子: