Main方法如下:
Console.WriteLine();
Console.WriteLine(str.Substring(1));
Console.ReadLine();
}
</div>
运行,结果如下:
使用reflactor 反编译下,可以看到:
完整代码如下:
Console.WriteLine(str.Length);
Console.WriteLine();
Console.WriteLine(str.Substring(1));
一共使用了四次dynamic对象。1:Console.WriteLine(dynamic); str.Length返回dynamic2:dynamic.Length;3:Console.WriteLine(dynamic); str.Substring 返回dynamic4:dynamic.Substring(1); 1,2,3,4,分别对应上面的<>p_Site1,2,3,4;
因为1,3 都是无返回值的,所以是Action, 2,4都有返回值,所以是Func. 看上面的代码可能还不清楚,让我们手动的生成下代码吧:新建类SiteContainer 来取代编译器自动生成的类。
InvokeMember方法的签名:public static CallSiteBinder InvokeMember(CSharpBinderFlags flags, string name, IEnumerable<Type> typeArguments
您可能想查找下面的文章:
- C#中Dynamic和Dictionary性能比较
- C#中dynamic关键字的正确用法(推荐)
- 深入C# 4.0 新特性dynamic、可选参数、命名参数的详细介绍
- C# Dynamic关键字之:dynamic为什么比反射快的详解
- C# Dynamic之:ExpandoObject,DynamicObject,DynamicMetaOb的应用(下)
- C# Dynamic之:ExpandoObject,DynamicObject,DynamicMetaOb的应用(上)
- C# Dynamic关键字之:调用属性、方法、字段的实现方法
- C# Dynamic关键字之:解析dynamic就是Object
- C# dynamic关键字的使用方法