using System;
using System.Collections.Generic;
using System.Linq;
using System.Reflection;
using System.Text;
using System.Threading.Tasks;

namespace 基于System.Type的反射
{
    class Program
    {
        static void Main(string[] args)
        {
            //1.使用GetType() 反射类型
            string a = "Hello world.";

Type t = a.GetType();
            Console.WriteLine(t.FullName);

//2.使用Type.GetType() 反射类型
            Type t1 = Type.GetType("System.String", false, true);
            Console.WriteLine(t1.FullName);

//3.使用typeof获取类型
            Type t2 = typeof(string);
            Console.WriteLine(t2.FullName);

//通过方法获取对象的方法
            GetMethods(t, BindingFlags.Public | BindingFlags.Instance);

// Console.WriteLine("join Methods:{0}",t.GetMethod("Copy"));
           // Console.WriteLine("-----------------------------------------------------------");

// //知识点补充:抽象类不能实例化

#region 动态加载程序集
            
          
            // //动态加载.net2.0所有程序集,并获取所有类型
            Assembly objAssembly;
            objAssembly = Assembly.Load("mscorlib,2.0.0.0,Neutral,b77a5c5619934e089");

Type[] types = objAssembly.GetTypes();
            foreach (var t3 in types)
            {
                Console.WriteLine(t3.Name);
            }

//获取当前执行的程序集
            objAssembly = Assembly.GetExecutingAssembly();
            //检查对象(基于System.Type的反射.car)
            Type t4 = objAssembly.GetType("基于System.Type的反射.car", false, true);
            //创建一个当前对象的实例
            object obj = Activator.CreateInstance(t4);
            //获取当前对象中存在的方法
            MethodInfo mi = t4.GetMethod("IsMoveing");
            //判断当前对象是否存在指定的方法 obj指实例化对象,null指IsMoveing()的参数
            var ismoving = (bool)mi.Invoke(obj, null);

if(ismoving)
            {
                Console.WriteLine("Yes");
            }
            else
            {
                Console.WriteLine("NO");
            }
            #endregion
            Console.ReadLine();
           
        }

/// <summary>
        /// 获取对象的所有方法 GetProperty()获取所有属性   GetFields()获取所有字段
        /// </summary>
        /// <param name="t"></param>
        public static void GetMethods(Type t,BindingFlags f)
        {
            MethodInfo[] mi = t.GetMethods(f);
            foreach (MethodInfo item in mi)
            {
                Console.WriteLine("{0}",item.Name);
            }
        }

}

class car
    {
        public bool IsMoveing()
        {
        return true;
        }
    
    }
}

C#反射机制 Type类型的更多相关文章

  1. 关于Java反射机制的几个问题

    >>如何在运行时确定对象类型 运行时类型识别(Run-time Type Identification, RTTI)主要有两种方式, 一种是在编译时和运行时已经知道了所有的类型,另外一种是 ...

  2. c#反射机制学习和利用反射获取类型信息

    反射(Reflection)是.NET中的重要机制,通过放射,可以在运行时获得.NET中每一个类型(包括类.结构.委托.接口和枚举等)的成员,包括方法.属性.事件,以及构造函数等.还可以获得每个成员的 ...

  3. Java基础 -- 深入理解Java类型信息(Class对象)与反射机制

    一 RTTI概念 认识Claa对象之前,先来了解一个概念,RTTI(Run-Time Type Identification)运行时类型识别,对于这个词一直是 C++ 中的概念,至于Java中出现RT ...

  4. python之反射机制与callattr()、issubclass()、isinstance、type()相关

    一.反射机制 * 反射可以理解为 通过字符串的形式,动态导入模块: 利用字符串的形式,在对象(模块)中操作(查找/获取/删除/添加)成员,是一种基于字符串的事件驱动! 反射机制的内置函数 # hasa ...

  5. JAVA类型信息——反射机制

    JAVA类型信息——反射机制 一.反射机制概述 1.反射机制:就是java语言在运行时拥有的一项自我观察的能力,java通过这种能力彻底了解程序自身的情况,并为下一步的动作做准备. 2.反射机制的功能 ...

  6. Java反射机制demo(一)—实例化Class对象,并获得其他类包名和类型

    Java反射机制demo(一)——实例化Class对象,通过对象获得包名和类型 使用Java中的 本地类作为实验对象,避免自定义的类带来的一些不便. public static void main(S ...

  7. 反射机制,jvm,class类型

    [说明]这是上午完成的内容或者说是接触到的知识点,包括servlet简单的数据库连接,表格的显示需要用到的插件jstl,还有最最多的java反射原理的讲解 1)数据库的设计 2)编程中用到的知识点 3 ...

  8. Java学习之反射机制及应用场景

    前言: 最近公司正在进行业务组件化进程,其中的路由实现用到了Java的反射机制,既然用到了就想着好好学习总结一下,其实无论是之前的EventBus 2.x版本还是Retrofit.早期的View注解框 ...

  9. 第28章 java反射机制

    java反射机制 1.类加载机制 1.1.jvm和类 运行Java程序:java 带有main方法的类名 之后java会启动jvm,并加载字节码(字节码就是一个类在内存空间的状态) 当调用java命令 ...

随机推荐

  1. 使用Fragment创建灵活的用户界面

      什么是Fragment         Fragment的作用像Activity一样,主要用于呈现用户界面,它依附于Activity存在,但比Activity更灵活. 当我们需要创建动态的,多面板 ...

  2. windows服务 定时任务

    1.c#程序做成windows服务 若用cmd安装: var path = Process.GetCurrentProcess().MainModule.FileName + " s&quo ...

  3. python爬某个网站的图片

    # _*_ coding: gbk _*_ import urllib import urllib2 import re class Spider: def getImage(self,html): ...

  4. VS 团队资源管理 强制解锁锁定文件

    故事是这样发生的: 以前有台电脑,在团队资源里看程序,可能冥冥中不小心按了个空格,so,文件被锁定 而我却没有发现 如果再给我一个机会,我只想说记得签入 然后,高潮来了 重装电脑 欣喜的装好新机子打开 ...

  5. Python基础7:文件操作

    [ 文件操作] 1 对文件操作流程 打开文件,得到文件句柄并赋值给一个变量 通过句柄对文件进行操作 关闭文件 现有文件如下: 昨夜寒蛩不住鸣. 惊回千里梦,已三更. 起来独自绕阶行. 人悄悄,帘外月胧 ...

  6. <<< 入侵网站类提权注入教程

    ---------------------------------------入侵类教程-------------------------------------------------------- ...

  7. linux下centos的网络连接

  8. 《Python核心编程》 18.多线程编程(一)

    一进程和线程 1参考链接: http://www.zhihu.com/question/25532384 中OF小工和zhonyong 的回答 总结他们两的回答: 引言: 1.电脑的运行,在硬件上是C ...

  9. Java核心思想

    回忆面向对象思想        面向对象,主页君也不敢对其多说什么,毕竟这是一个看似简单,但是其实蕴含很深层次理   论的东西,并不是看书就可以理解的,其实也是要在很多实际操作中学习,积累.     ...

  10. Node.js入门笔记(6):web开发方法

    使用node进行web开发 用户上网流程: 表面上看:打开浏览器--输入网址--跳转--上网. 背后的过程是什么呢? http请求网址到指定的主机--服务器接收请求--服务器响应内容到用户浏览器--浏 ...