System.Reflection.Assembly类是一个比较常用到的类,在反射中就经常用到。
由于这个类实在有太多的字段、属性与方法。实在不想将一个个属性方法从MSDN复制出来然后逐个属性、方法敲一次,我想改变一下学习方法,从实际运用学习。
使用反射加载程序集并执行方法,加载程序集主要使用LoadFrom()方法。
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(); }
以上程序运行输出3。
读取嵌入的资源,主要有如下两个方法:
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(); }
原文:http://www.cnblogs.com/kissdodog/p/3543258.html