- 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 Overview
- ADO.NET Overview
- 提供对数据源的一致性访问
- SQL Server, XML, OLE DB, ODBC
- 把数据访问和数据操弄分开
- 核心是DataSet对象
- 标类可以在System.Data.dll中找到
- XML相关的可以在System.Xml.dll中找到
- ADO这个名字其实来源于ActiveX Data Objects,以前的COM技术
- 需要更高阶的抽象,可以参考ADO.NET Entity Framework
- ADO.NET Architecture
-
ADO.NET Components#
-
.NET Framework Data Providers#
- Connection对象提供到数据源的连接性
- Command对象提供到对象的访问,并支持数据相关的操作
- DataReader提供高性能的流式数据处理
- DataAdapter使用Command对象来执行SQL命令,可以达成数据同步
-
The DataSet#
- 为独立于数据源的数据访问而特别设计的
- 可用于多种数据源
- 包含一到多个DataTable的合集,每个DataTable含有行列数据。
-
Choosing a DataReader or a DataSet#
- DataReader是只前向仅可读的,有更好的性能,和更少的内存使用;但缺乏灵活性
-
LINQ to DataSet#
-
LINQ to SQL#
-
ADO.NET Entity Framework#
-
WCF Data Services#
-
XML and ADO.NET#
- ADO.NET Technology Options and Guidelines
-
Entity Framework#
-
Entity Data Model (EDM)#
-
Object Services#
-
LINQ to Entities#
-
Entity SQL#
-
EntityClient#
-
-
LINQ to SQL#
-
WCF Data Services#