Dynamic programming

  • Reflection
    • Reflection
      • System.Refelction以及System.Type允许你从加载的装配件中获取类型信息。
      • CLR管理application domains
      • 装配件包含模块,模块包含类型,类型包含成员。勘察功能提供封装装配件、模块和类型的对象,典型用法:
        • 使用Assembly来定义和加载装配件,以及从装配件中加载类型,并例现化之
        • 使用Module来发现这类信息:模块所在的装配件,模块中的标类
        • 使用ConstructorInfo来发现这类信息:名字、参数、访问修饰符、以及实现细节。使用Type上的GetConstructors或GetConstructor来调用一个特定的构造器
        • 使用MethodInfo来发现方法相关的信息
        • 使用FieldInfo来发现域属相关的信息
        • 使用EventInfo来发现时间相关的信息
        • 使用PropertyInfo来发现辖属相关的信息
        • 使用ParamterInfo来发现参数的名字、数据类型、输入输出、位置等信息
        • 使用CustomAttributeData来自仅勘察的情境下,可以在不例现化对象的时候检查属性。System.Reflection.Emit可以动态建构类型
      • Runtime types in reflection

        • 勘察所提供的标类如Type和MethodInfo大都是抽象的,实际上是通过CLR提供的类型来进行勘察
          • 例如,使用C#的typeof操作符来获取一个Type对象的时候,此对象实际上是RuntimeType,它实现了Type类型
          • 这些运行时标类是internal
    • Viewing Type Information
      • System.Type是勘察的核心
        • 使用Assembly.GetType(s)来从装配件获取尚未加载的Type对象
        • 使用Type.GetType来获取已经加载的Type对象
        • 使用Module.GetType(s)来获取模块Type对象
      • 获取Assembly对象
        • 例子:Assembly a = typeof(object).Module.Assembly;
        • 例子:Assembly a = Assembly.LoadFrom("MyExe.exe");
      • System.Type and ConstructorInfo

        • 【举了一个例子来打印构造器信息】
      • MemberInfo, MethodInfo, FieldInfo, and PropertyInfo

        • 【举了若干例子】

ADO.NET