`
izuoyan
  • 浏览: 9205773 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

“反射”在C#编程中的应用

阅读更多

关于反射机制MSDN中是这样说明的:反射提供了封装程序集、模块和类型的对象(Type 类型)。可以使用反射动态创建类型的实例,将类型绑定到现有对象,或从现有对象获取类型并调用其方法或访问其字段和属性。如果代码中使用了属性,可以利用反射对它们进行访问。

其主要的作用是:

  • 需要访问程序元数据的属性。(元数据被定义为:在程序中不是被加工的对象,而是通过其值的改变来改变程序的行为的数据。)

  • 检查和实例化程序集中的类型。

  • 在运行时构建新类型。使用 System.Reflection.Emit 中的类。

  • 执行后期绑定,访问在运行时创建的类型的方法。请参见主题动态加载和使用类型

  • 封装是面向对象编程中常用的方法,具体针对反射的作用来说,动态创建类型并绑定到现有对象是最重要的应用。

    下面通过一个具体实例对其用法进行说明(实例代码参照http://www.cnblogs.com/fineboy/archive/2006/10/10/525348.html博文)

    (假如DLL的文件名是TestReflect.dll)

    首先创建一个动态链接库

    1using System;
    2
    3namespace Webtest
    4{
    5 /**//// <summary>
    6 /// ReflectTest 的摘要说明。
    7 /// </summary>
    8 public class ReflectTest
    9 {
    10 public ReflectTest()
    11 {}
    12
    13 public string WriteString(string s)
    14 {
    15 return "欢迎您," + s;
    16 }
    17
    18 /**//// <summary>
    19 /// dsajkjflasjdfalksdjfaskfd
    20 /// </summary>
    21 /// <param name="s"></param>
    22 /// <returns></returns>
    23 public static string WriteName(string s)
    24 {
    25 return "欢迎您光临," + s;
    26 }
    27
    28 public string WriteNoPara()
    29 {
    30 return "您使用的是无参数方法";
    31 }
    32 }
    33}

    下面是具体调用方法:

    1publicvoidtest1()
    2{
    3System.Reflection.Assemblyass;
    4Typetype;
    5objectobj;
    6try
    7{
    8ass=System.Reflection.Assembly.LoadFile(@"d:\TestReflect.dll");
    9type=ass.GetType("Webtest.ReflectTest");//必须使用名称空间+类名称
    10System.Reflection.MethodInfomethod=type.GetMethod("WriteString");//方法的名称
    11obj=ass.CreateInstance("Webtest.ReflectTest");//必须使用名称空间+类名称
    12strings=(string)method.Invoke(obj,newstring[]{"jianglijun"});//实例方法的调用
    13
    14Response.Write(s+"<br>");
    15method=type.GetMethod("WriteName");//方法的名称
    16s=(string)method.Invoke(null,newstring[]{"jianglijun"});//静态方法的调用
    17Response.Write(s+"<br>");
    18
    19method=type.GetMethod("WriteNoPara");//无参数的实例方法
    20s=(string)method.Invoke(obj,null);
    21Response.Write(s+"<br>");
    22method=null;
    23}

    24catch(Exceptionex)
    25{
    26Response.Write(ex+"<br>");
    27}

    28finally
    29{
    30ass=null;
    31type=null;
    32obj=null;
    33}

    34}

    分享到:
    评论

    相关推荐

      C#编程规则与技巧

      C#编程规则与技巧中,首先引入了泛型编程的概念,它是通过参数化类型来实现在同一份代码上操作多种数据类型的一种编程范式。泛型编程的引入主要是为了解决在实际编程中遇到的共性问题,比如两个模块功能相似,仅处理...

      C# 编程指南 C# 随身参考 Wego开发组专用

      反射(C# 编程指南) C# DLL(C# 编程指南) 安全性(C# 编程指南) 请参见 其他资源 C# 参考 Visual C# Visual C# 指导教程 -----------------------------------------------------------------------------...

      Visual C#.NET应用编程150例

      《Visual C#.NET应用编程150例》是一本深入探讨C#编程实践的书籍,旨在帮助开发者掌握C#在.NET框架下的应用技巧。通过150个精心设计的实例,该书涵盖了C#编程的各个方面,从基础语法到高级特性的应用,为读者提供了...

      深入 .NET平台和C#编程

      在 .NET 框架下开发三层结构数据库应用系统(ADO.NE... 3. 授课次序 T 1 L 1 T 2 L 2 T 3 L 3 T 4 L 4 T 5 L 5 DLC 1 T 6 L 6 T 7 L 7 DLC 2 T 8 L 8 T 9 L 9 DLC 3 ...

      C#编程思想(Thinking in C#)

      《C#编程思想》是一本深入探讨C#编程语言的经典著作,旨在帮助读者理解C#的核心概念、设计哲学以及在实际开发中的应用。这本书详细介绍了C#的各种特性,包括面向对象编程、泛型、异常处理、集合、多线程、反射、属性...

      C#反射(Reflection)的应用

      在C#编程语言中,反射(Reflection)是一个强大的工具,它允许程序在运行时检查自身的行为,包括类、接口、属性、方法等元数据信息,并能够动态地创建对象和调用方法。这篇压缩包文件提供了关于C#反射的实践示例,...

      c#中的特性(attribute)+反射的一个例子

      在C#编程语言中,特性(Attribute)是一种元数据,它可以提供有关代码的附加信息,这些信息可以在编译时或运行时被程序访问。特性允许程序员向类、方法、属性等添加自定义标记,以便在后期处理中进行特定操作。另一...

      C#编程宝典 源代码

      以上只是C#编程宝典中涵盖的部分知识点,实际源代码中可能包括更多实际案例和高级特性的应用,如并发编程、元编程、反射、单元测试等。通过学习和实践这些源代码,读者可以全面提升C#编程能力,更好地应对实际项目...

      c#编程语言详解(中文)

      学习C#编程语言,你需要掌握以上这些核心概念,并通过实践编写代码来加深理解。同时,不断关注C#的新版本和更新,如C# 8.0及更高版本引入的更多新特性和改进,如默认接口方法、模式匹配等,以保持技术的前沿性。对于...

      windows应用高级编程-C#编程篇

      总之,《Windows应用高级编程-C#编程篇》是一本全面覆盖C#在Windows环境下编程的指南,涵盖了从基础到高级的各个层面,旨在帮助开发者提升技能,构建高效、稳定的Windows应用程序。通过深入学习这本书,你将能够熟练...

      C#编程指南 最新

      - 应用程序域是在进程中划分的一个独立单元。 - 它们用于隔离应用程序的不同部分,以便于资源管理和异常处理。 #### 程序集与全局程序集缓存 - 程序集是.NET框架的基本部署单元,包含一个或多个编译后的组件。 - ...

      c# 反射应用几乎最全面的实例

      在C#编程语言中,反射是一项强大的特性,它允许运行时检查类型信息并动态操作对象。这个"c# 反射应用几乎最全面的实例"集合可能是为了展示反射的各种应用场景和用法。以下是对C#反射及其应用的详细解释。 反射的...

      visual c#.net 应用编程150例

      在.NET框架下,C#是一种面向对象的、现代化的编程语言,由微软公司开发并广泛用于构建Windows桌面应用程序、Web应用程序以及移动应用。C#.NET的语法简洁明了,同时提供了丰富的类库和强大的开发工具,如Visual ...

      基于反射实现C#编辑器

      本项目“基于反射实现C#编辑器”聚焦于使用C#编程语言和反射技术来构建一个可扩展的编辑器,这为软件的二次开发提供了一个强大的工具。 C#是一种面向对象的、类型安全的编程语言,广泛应用于Windows桌面应用、Web...

      精通C#编程 光盘

      但是,要解决很多应用问题仅仅有这些能力还远远不够,还需要进一步提高,掌握更多的C#编程技术。市场上介绍C#这方面内容的书非常少,本书是根据作者长期在应用C#开发方面积累的经验总结,并且在参考大量文献资料的...

      c#编程 实例100篇

      在C#编程中,实例是将抽象的概念转化为具体代码的过程,是学习编程语言的重要环节。"C#编程实例100篇"是一个精心设计的学习资源,旨在帮助初学者和有一定经验的开发者通过实践来深入理解C#语言的核心特性和常见应用...

      C#编程技巧经典

      "C#编程技巧经典"这一主题涵盖了C#语言在实际开发中的多种基础技巧和应用实例,旨在帮助开发者深入理解并熟练运用这些技巧。下面我们将详细探讨其中的关键知识点。 1. **面向对象编程**:C#作为一门面向对象的语言...

      C#反射、委托技术在设计模式中的应用

      在C#编程中,反射和委托是两种强大的特性,它们在设计模式中发挥着至关重要的作用。本文将深入探讨这两种技术及其在设计模式中的应用场景。 首先,让我们理解什么是反射。反射是.NET框架的一个核心特性,它允许程序...

      C#,利用反射动态创建对象

      在C#编程中,反射是一种强大的机制,它允许我们在运行时检查类型信息并动态地创建对象。通过反射,我们可以操作程序集、类型、接口、属性、方法等,从而增加了代码的灵活性和可扩展性。本篇文章将深入探讨如何利用...

    Global site tag (gtag.js) - Google Analytics