zoukankan      html  css  js  c++  java
  • C#反射(二) 【转】

    如果没有看《C#反射(一)》、建议先看《C#反射(一)》再看这一篇。上一篇文章发表,有人评论我所写的东西比较基础。其实我也知道我也只不过是在写最基础的语法而已,之所以写它是因为自己学编程学了一两年之后才接触到反射,相信会有很多人跟我有过同样的经历。概其原因,书店里几乎90%的书籍都不谈反射。还有,曾经在百度、goole搜索过反射,但也很难找到自己喜欢的答案。希望我所写的东西能为那些初学编程的新手有所帮助。

    我不想在这里过多的描述反射的概念。我还是用我自己觉得最简单、最直接的语言来描述反射——“反射就是一种机制,通过这种机制,我们能知道一些位知程序集的详细信息!”;通过上一篇我们已经学会如何得到一个未知程序集的相关信息,接下来我要讲的是如何知道未知程序模块的信息:

    模块信息是通过Module类访问的。下面通过一个类子,讲解下Module类的使用,如果你是一个用心的程序员,应该了解下Module的详细信息。

    还是继续使用C#反射(一)的类子。下面我们写一个新的文件ModuleDemo.cs。内容如下:

    //编译命令 csc /r:Sport.dll ModuleDemo.cs

    using System;
    
    using System.Reflection;
    
     
    
    public class ModuleDemo
    
    {
    
       public static void Main(string[] args)
    
       {
    
        //=======================
    
        // Am Module object is obtained representing the
    
        // SomeSports.dll library file
    
        //=======================
    
     
    
        Assembly assembly = Assembly.Load("SomeSports");
    
        Module module = assembly.GetModule("SomeSports.dll");
    
     
    
        //======================
    
        //Search the module for the type named "Football"
    
     
    
        Type[] types = module.FindTypes(Module.FilterTypeName,"Football");
    
     
    
        if(types.Length != 0)
    
        {
    
           ConstructorInfo ci = types[0].GetConstructor(new Type[0]);
    
           Sport sport = (Sport)ci.Invoke(new Object[0]);
    
     
    
           Console.WriteLine(sport.GetName() + " has "+sport.GetDuration());
    
        }
    
        else
    
        {
    
           Console.WriteLine("type not found");
    
        }
       }
    
    }

    我们用csc /r:Sport.dll ModuleDemo.cs编译,然后用MouduleDemo运行程序就能看到如下输出:Football has four 15 minute quarters。

        关于C#反射的基础知识,还有一个知识点就是访问未知对象的类型信息。在下一篇我将介绍它,并介绍我自己曾经写过的一个应用,可以实现具有相同属性或域名的不同类型对象之间的数据相互复制(在Java中可用于J2EE中POJO到Form Bean之间的数据复制)。

  • 相关阅读:
    解决线程不能访问用户界面组件的问题
    Oracle使用手册(三)存储过程与触发器
    VC中的字符串操作
    Windows 窗体多线程
    VC中的指针操作
    读写独立存储库
    10个不用保养品的美容护肤法 生活至上,美容至尚!
    吃出来的美白方法 生活至上,美容至尚!
    八大梦境提醒的你疾病所在 生活至上,美容至尚!
    31条!最致命的生活小细节 生活至上,美容至尚!
  • 原文地址:https://www.cnblogs.com/shenwuyu/p/4649908.html
Copyright © 2011-2022 走看看