Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Dynamic C#4.0动态类型的最常见应用_Dynamic_C# 4.0_Dynamic Language Runtime - Fatal编程技术网

Dynamic C#4.0动态类型的最常见应用

Dynamic C#4.0动态类型的最常见应用,dynamic,c#-4.0,dynamic-language-runtime,Dynamic,C# 4.0,Dynamic Language Runtime,现在人们已经使用C#4.0有一段时间了,我想我应该看看人们是如何最经常地使用“dynamic”类型的,为什么这能帮助他们比以前更好地解决问题?例如,在使用反射时 例如,类似以下内容: object calc = GetCalculator(); Type calcType = calc.GetType(); object res = calcType.InvokeMember("Add", BindingFlags.InvokeMethod, null, new object[] { 10, 2

现在人们已经使用C#4.0有一段时间了,我想我应该看看人们是如何最经常地使用“dynamic”类型的,为什么这能帮助他们比以前更好地解决问题?

例如,在使用反射时

例如,类似以下内容:

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 calc = GetCalculator();
int sum = calc.Add(10, 20);
我认为这是一个很大的进步

但是,还有更多的主题可以让它派上用场。例如,当使用COM互操作对象时,这可能会派上用场,请查看:

在嵌入动态语言(如IronPython/IronRuby)时,也可以使用它来加载外部源文件中定义的类型,并在C语言中更直接地访问它们#