首页 > 其他 > 详细

Assembly类

时间:2014-02-10 19:25:02      阅读:439      评论:0      收藏:0      [点我收藏+]

  System.Reflection.Assembly类是一个比较常用到的类,在反射中就经常用到。

  由于这个类实在有太多的字段、属性与方法。实在不想将一个个属性方法从MSDN复制出来然后逐个属性、方法敲一次,我想改变一下学习方法,从实际运用学习。

一、加载程序集并执行方法

  使用反射加载程序集并执行方法,加载程序集主要使用LoadFrom()方法。

bubuko.com,布布扣
    static void Main(string[] args)
    {
        Assembly ass = Assembly.LoadFrom(@"D:\test.dll");
        Type type = ass.GetType("Test.Add");      //注意要输入全部路径,包括命名空间
        object obj = Activator.CreateInstance(type);
        MethodInfo Add = type.GetMethod("AddCalculate");  //根据方法名获取MethodInfo对象
        int i = (int)Add.Invoke(obj, new object[2] { 1, 2 });
        Console.WriteLine(i);

        Console.ReadKey();
    }
bubuko.com,布布扣

  以上程序运行输出3。

二、读取程序集中嵌入的资源

  读取嵌入的资源,主要有如下两个方法:

  1. GetManifestResourceNames:读取嵌入的资源名称。
  2. GetManifestResourceStream:读取嵌入的资源为流。
bubuko.com,布布扣
        static void Main(string[] args)
        {
            Assembly ass = Assembly.LoadFrom(@"D:\test.dll");
            string[] names = ass.GetManifestResourceNames();
            foreach (string name in names)
            {
                Console.WriteLine("所有的嵌入资源名:" + name);
            }

            Stream myStream = ass.GetManifestResourceStream("Test.1.txt");
            Console.WriteLine();
            using (StreamReader sr = new StreamReader(myStream, Encoding.Default))
            {
                //嵌入的资源1.txt的内容
                Console.WriteLine("嵌入的资源1.txt的内容:" + sr.ReadToEnd());
            }
            
            Console.ReadKey();
        }
bubuko.com,布布扣

Assembly类

原文:http://www.cnblogs.com/kissdodog/p/3543258.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!