"这篇文档主要讨论了.NET框架中反射创建类型实例的方法,以及.NET发展史中的各个版本区别。文中详细介绍了反射的概念,包括如何获取和加载程序集、获取类型,并提到了委托和事件。此外,还简要概述了.NET Framework从1.1到4.0的主要版本变化。"
在.NET框架中,反射是一种强大的工具,允许我们在运行时动态地获取类型信息并创建实例。通过反射,我们可以访问类型的方法、属性、事件和构造函数,增强了代码的灵活性和可扩展性。以下是如何使用反射创建类型实例的几种常见方式:
1. 使用`System.Activator.CreateInstance`方法:
```csharp
Object obj = Activator.CreateInstance(type); // type 是一个类型对象
```
2. 使用`Assembly.CreateInstance`方法:
```csharp
PetShop.IDAL.Iproduct myProduct = (PetShop.IDAL.IProduct)assembly.CreateInstance("PetShop.SQLServerDAL.Product");
```
3. 结合反射程序集和`CreateInstance`:
```csharp
PetShop.IDAL.Iproduct myProduct = (PetShop.IDAL.IProduct)Assembly.Load("PetShop.SQLServerDAL").CreateInstance("PetShop.SQLServerDAL.Product");
```
反射还涉及到对程序集的管理和操作。`System.Reflection.Assembly`类用于表示.NET程序集,可以通过它加载和获取程序集的信息。例如,可以使用`AppDomain.CurrentDomain.GetAssemblies()`获取当前应用程序域中的所有程序集,或者使用`Assembly.Load`和`Assembly.LoadFrom`方法加载特定的程序集。
要获取类型,我们可以使用`System.Type`。`typeof`运算符可以用于静态获取类型,如`Type type = typeof(int);`。另外,还可以通过`Type.GetType`方法根据类型名称动态获取类型。
在.NET发展历程中,各个版本带来了不同的特性和改进:
- .NET Framework 1.1:最初的版本,引入了基础类库和公共语言运行时(CLR)。
- .NET Framework 2.0:增加了泛型、匿名方法、迭代器和改进的XML支持。
- .NET Framework 3.0:引入WPF(Windows Presentation Foundation)、WCF(Windows Communication Foundation)、WF(Windows Workflow Foundation)和WWF(Windows CardSpace)。
- .NET Framework 3.5:在3.0基础上添加了LINQ(Language Integrated Query)、扩展方法和Silverlight支持。
- .NET Framework 3.5 SP1:服务包1,提供了性能优化和其他改进。
- .NET Framework 4.0:进行了大量性能优化,改进了并发和垃圾收集,还引入了Task Parallel Library(TPL)和Parallel LINQ(PLINQ)。
这些版本的演进展示了.NET框架不断成熟的过程,提供了更多高级功能和更好的性能支持。理解这些版本的区别对于开发和维护.NET应用至关重要。