zoukankan      html  css  js  c++  java
  • 反射简介

    1利用反射 如何判断传递进来的参数是否实现了某个接口

    Type t=object.GetType()

    if(t.GetInterface("ITest")!=null)

    {

    }

    2 利用反射获取类型

    Type t=Type.GetType("System.String")

    3 如何根据类型来动态的创建对象

    Type  t  =  Type.GetType("System.Data.DataTable,System.Data,Version=1.0.3300.0,  Culture=neutral,  PublicKeyToken=b77a5c561934e089");
    DataTable  table  =  (DataTable)Activator.CreateInstance(t);

    4 根据有参数的构造器创建对象

    1. Type  t  =  Type.GetType(“TestSpace.TestClass”);
    2. Object[]  constructParms  =  new  object[]  {“hello”};  //构造器参数
    3. TestClass  obj  =  (TestClass)Activator.CreateInstance(t,constructParms);

    5 如何获取方法以及动态调用方法

    //获取类型信息
    Type  t  =  Type.GetType("TestSpace.TestClass");
    //构造器的参数
    object[]  constuctParms  =  new  object[]{"timmy"};
    //根据类型创建对象
    object  dObj  =  Activator.CreateInstance(t,constuctParms);
    //获取方法的信息
    MethodInfo  method  =  t.GetMethod("GetValue");
    //调用方法的一些标志位,这里的含义是Public并且是实例方法,这也是默认的值
    BindingFlags  flag  =  BindingFlags.Public  |  BindingFlags.Instance;
    //GetValue方法的参数
    object[]  parameters  =  new  object[]{"Hello"};
    //调用方法,用一个object接收返回值
    object  returnValue  =  method.Invoke(dObj,flag,Type.DefaultBinder,parameters,null);
  • 相关阅读:
    libZPlay 音频编码解码器库
    C# PropertyGrid控件
    .netGDI+(转)
    (转)JITComplier、NGen.exe及.NET Native
    c# 特性/属性(Attribute) 以及使用反射查看自定义特性
    Fluent NHibernate系列文章
    Hibernate工作原理
    Orchard核心机制
    NHibernate和 FluentNHibernate
    极限编程之TDD
  • 原文地址:https://www.cnblogs.com/mibing/p/7837621.html
Copyright © 2011-2022 走看看