反射 Module类详解

本文深入探讨了C#反射中Module类的使用方法,包括如何获取模块对象、搜索模块中指定类型的实例,并访问未知对象的类型信息。通过示例代码演示了编译命令、加载DLL、查找类型、调用构造函数等关键步骤,最终展示了输出结果,清晰展示了C#反射技术在实际开发中的应用。
摘要由CSDN通过智能技术生成

配合官方注解来看,效果更好:https://msdn.microsoft.com/zh-cn/library/f7ykdhsy(v=vs.110).aspx

模块信息是通过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#反射的基础知识,还有一个知识点就是访问未知对象的类型信息。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值