美文网首页C#编程中国.NET
C#程序集相关的概念

C#程序集相关的概念

作者: 小明yz | 来源:发表于2017-09-24 18:08 被阅读57次

程序集包含:类型元数据(描述在代码中定义的每一类型和成员,二进制形式)。程集元数据(程序集清单、版本号、名称等)、IL代码(这些都被装在exe或dll中)、资源文件。每个程序集都有自己的名称、版本等信息,这些信息可以通过AssemblyInfo.cs文件来自己定义。

获取一个类的类型  person p=new person();  Type  Type=p.getType();

得到一个类的类型  Type type=typeof(Person);

获取一个类型的父类   Type  type=s.GetType().BaseType;

获取Person类型的所有方法(不包括私有方法)

Person  p=new Person(); Type  personType=p.GetType();

MethodInfo[]   methods=personType.GetMethods();

foreach(var item in methods)

{

Console.Writeline(item.Name);

}

获取一个类型的属性:

PropertyInfo[]  properties=persontype.GetProperties();

遍历数组的时候返回的类型为PropertyInfo

获取一个类型的所有字段:FieldInfo[]  fields=typeof(Person).GetFiels();返回的类型为FieldInfo

获取一个类中的所有成员:MemberInfo[]  members=typePerson.GetMembers();遍历数组时返回的类型为MemberInfo;

通过反射调用方法:(定义的方法没有参数)

1.获取一个类的Type

2.获取我们要找的方法

3.创建一个该类的对象

4.调用方法

Type  person=typeof(Person);

MethodInfo  SayHi=peron.GetMethod("SayHi");

object obj=Activator.CreateInstance(person);

SayHi.Invoke(obj,null);

通过反射调用方法(定义的方法有参数)

Type  person=typeof(Person);

MethodInfo  info=person.GetMethod("Say",new Type[]{typeof(string),typeof(string)});

object obj=Activivator.CreateInstance(person);

info.Invoke(obj,new obj[]{"大家好","大坏蛋"});

调用一个带返回值的方法:

Type personType=typeof(Perosn);

MethodInfo info=personType.GetMethod("Add");//Add方法中返回的是一个int类型的方法

object obj=Activator.CreateInstance(personType);

object objreturn=info.Invoke(obj,new object[]{10,20});

动态加载程序集:

Assembly  asm=Assembly.LoadFile(@"E:\aa\程序集\程序集\ClassLibrary1\bin\Debug\ClassLibrary1.dll")

获取程序集中所有类型的Type

Type[]  types=asm.GetTypes();

获取所有类型的public 类型的Type

Assembly  adm=Assembly.LoadFile(文件的绝对路径);

Type[] publictype=adm.GetExportTypes();

获取指定的类型

Type typePerson=asm.GetType("ClassLibrary1.Person");

判断一个类型是否可以被另一个类型实例化

typePerson.IsAssignableForm(typeChinese);

考虑是一个类型是否为另一个类型的子类,返回的结果是一个bool类型

typePerson.IsSubclassOf(typeChinese)

欢迎关注我的公众号(同步更新文章)DoNet技术分享平台

阅读原文

相关文章

  • C#程序集相关的概念

    程序集包含:类型元数据(描述在代码中定义的每一类型和成员,二进制形式)。程集元数据(程序集清单、版本号、名称等)、...

  • 第二章 程序结构

    C# 中的关键组织结构概念包括程序、命名空间、类型、成员和程序集。 C# 程序由一个或多个源文件组成。 程序声明类...

  • C#基础之002-基础概念001

    C#关键概念 C# 组织结构的关键概念是程序 (program)、命名空间 (namespace)、类型 (typ...

  • C#使用反射加载多个程序集

    C#使用反射加载多个程序集 当开发插件的时候需要用到反射,在客户端动态加载遍历程序集,并调用每个程序集的方法。 创...

  • CLR中的程序集

    在CLR中,程序集相当于“组件”。 程序集的产生过程:C# 源代码文件----->(经过编译器[CSC.exe]编...

  • c#-网络编程,聊天工具

    c#的网络编程比较简单,有相关的类来实现相关的功能。 本小程序是<>里面的。 基本的类介绍 tcp...

  • C# graphics方法

    C# graphics方法 命名空间:System.Drawing 程序集:System.Drawing(在 sy...

  • C#委托

    C#中的delegate 在c#中,event与delegate是两个非常重要的概念。因为在Windows应用程序...

  • CLR commen language runtime

    CLR的执行模型(C#) 流程:1.将源代码编译成委托代码——>2.将委托代码合并成程序集——>3.执行程序集代码...

  • C#统计C、C++及C#程序代码行数的方法(所有代码行数,空行数

    该文主要介绍了C#统计C、C++及C#程序代码行数的方法,较为详细的分析了C#统计文本文件的原理与相关实现技巧,具...

网友评论

    本文标题:C#程序集相关的概念

    本文链接:https://www.haomeiwen.com/subject/nxxlextx.html