标签:icm 包含 ref class com 定义 eal pac 根据
Assembly:封装程序集信息,可以动态加载程序集
获取Assembly的几种方式:
1、var ass1 = Assembly.Load("ClassLibrary1");//项目中已引用此程序集,可以使用这种方法
2、var ass2 = Assembly.LoadFrom("c://xxxx.dll");//根据程序集全路径获取Assembly
3、var ass3 = personType.Assembly;//指定Type所在的Assembly
4、var ass4 = Assembly.GetAssembly(personType);//同上
5、var ass5 = Assembly.GetExecutingAssembly();//包含程序入口的程序集
Type:封装反射得到的类信息,也可以通过它反射创建一个对象
获取Type对象的几种方式:
1、assembly.GetType("反射Demo.Person"); 2、Type.GetType("反射Demo.Person"); 3、typeof(Person); 4、new Person().GetType();
Type对象的常用属性:
animalType.IsArray//是否是数组类型 animalType.IsImport//是否是COM类型库导入 animalType.IsVisible//是否可由程序集之外的代码访问 animalType.IsNestedPublic//如果类是嵌套的并且声明为公共的,则为 true;否则为 false。 animalType.IsNestedAssembly//是否是嵌套的并且只能在它自己的程序集内可见。 animalType.IsNestedFamily//是否是嵌套的并且只能在它自己的家族内可见。 animalType.IsNested//嵌套在另一个类型内 animalType.Namespace//命名空间 animalType.BaseType//直接继承Type animalType.AssemblyQualifiedName//程序集限定名 animalType.IsSealed//是否声明为密封的 animalType.FullName//获取该类型的完全限定名称,包括其命名空间,但不包括程序集。 animalType.Assembly//获取在其中声明该类型的 System.Reflection.Assembly animalType.Module//获取在其中定义当前 System.Type 的模块 (DLL)。 animalType.GUID//获取与 System.Type 关联的 GUID。
Type对象的常用方法:
var personType = typeof(Person); personType.GetProperties(); personType.GetProperty("Name"); personType.GetFields(); personType.GetField("_name"); personType.GetMethods(); personType.GetMethod("SayHello"); personType.GetMembers(); personType.GetMember("Name"); personType.MakeGenericType(new Type[] { typeof(string) }).GetMethod("SayHello").Invoke(obj);//为泛型对象指定泛型类型
MethodInfo成员:
mi.MakeGenericMethod(new Type[]{typeof(string)}).Invoke(obj,null);//为泛型方法指定泛型类型
标签:icm 包含 ref class com 定义 eal pac 根据
原文地址:https://www.cnblogs.com/fanfan-90/p/11961224.html