知识大全 c# 反射的使用方法

Posted

篇首语:有些人不管变得多么衰老,却从不失去他们的美丽本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 c# 反射的使用方法相关的知识,希望对你有一定的参考价值。

  在网上查找了不少的资料 可以说大同小异 概念性的东西网上一搜一堆 今天把反射的东西整理了一下 供大家使用 我保证我这里是最全面的东西 当然也是基础的东西 在学好了这一切的基础上 大家可以学习反射的具体插件等应用 老鸟就不用看了 首先我们建立一个类库 将它生成为HelloWorld dll

  using System;

  namespace Webtest    

  public interface interface                        int add();

           public class ReflectTest:interface         

  public String Write;             private String Writec;

  public String Writea                              get                                      return Write;                                  set                                      Write = value;                

  

  private String Writeb                              get                                      return Writec;                                  set                                      Writec = value;                

  

  public ReflectTest()                                this Write = Write ;                  this Writec = Writec ;             

  public ReflectTest(string str string str )                              this Write = str ;                 this Writec = str ;

  

  public string WriteString(string s int b)                              return 欢迎您 + s + + b; ;            

  public static string WriteName(string s)                               return 欢迎您光临 + s;             

  public string WriteNoPara()                             return 您使用的是无参数方法 ;            

  private string WritePrivate()                              return 私有类型的方法 ;            

  public int add()                              return ;                          然后 建立再建立一个项目引入该HelloWorld dll     using System;

  using System Threading;    using System Reflection;

  class Test            delegate string TestDelegate(string value int value );

  static void Main()                    //Assembly t = Assembly LoadFrom( HelloWorld dll ); 与下面相同的效果            Assembly t = Assembly Load( HelloWorld );

  foreach (Type aaa in t GetTypes())                           //Console Write(aaa Name);   //显示该dll下所有的类           

  Module[] modules = t GetModules();

  foreach (Module module in modules)                            //Console WriteLine( module name: + module Name);//显示模块的名字本例为 HelloWorld dll            

  Type a = typeof(Webtest ReflectTest);//得到具体的类的类型 和下面一个效果

  //Type a = t GetType( Webtest ReflectTest );//            //Console Write(a Name);

  string[] bb = aaaa bbbbb ;            object obj = Activator CreateInstance(a bb); //创建该类的实例 后面的bb为有参构造函数的参数            //object obj = t CreateInstance( Webtest ReflectTest );//与上面方法相同

  MethodInfo[] miArr = a GetMethods();            foreach (MethodInfo mi in miArr)                           //Console Write(mi Name);  //显示所有的共有方法          

  MethodInfo mi = a GetMethod( WriteString );//显示具体的方法            object[] aa= 使用的是带有参数的非静态方法 ;            string s = (string)mi Invoke(obj aa); //带参数方法的调用

  MethodInfo mi = a GetMethod( WriteName );            String[] aa = 使用的是静态方法 ;            string s = (string)mi Invoke(null aa ); //静态方法的调用

  MethodInfo mi = a GetMethod( WriteNoPara );            string s = (string)mi Invoke(obj null); //不带参数的方法调用

  MethodInfo mi = a GetMethod( WritePrivate BindingFlags Instance | BindingFlags NonPublic);            string s = (string)mi Invoke(obj null); //私有类型方法调用

  //Console Write(s );

  PropertyInfo[] piArr = a GetProperties(BindingFlags Instance | BindingFlags NonPublic | BindingFlags Public);            foreach (PropertyInfo pi in piArr)                         //Console Write(pi Name);  //显示所有的方法           

  PropertyInfo pi =a GetProperty( Writea );            //pi SetValue(obj Writea null);            //Console Write(pi GetValue(obj null));

  PropertyInfo pi = a GetProperty( Writeb BindingFlags Instance | BindingFlags NonPublic | BindingFlags Public);            pi SetValue(obj Writeb null);            //Console Write(pi GetValue(obj null));

  FieldInfo fi = a GetField( Write );            //Console Write(fi GetValue(obj));

  ConstructorInfo[] ci = a GetConstructors();            foreach (ConstructorInfo ci in ci )                            //Console Write(ci ToString()); //获得构造函数的形式           

  ConstructorInfo asCI = a GetConstructor(new Type[] typeof(string) typeof(string) );            //Console Write(asCI ToString());

  Webtest interface obj = (Webtest interface )t CreateInstance( Webtest ReflectTest );            Webtest ReflectTest obj = (Webtest ReflectTest)t CreateInstance( Webtest ReflectTest );            //Console Write(obj add());典型的工厂模式

  foreach (Type tt in t GetTypes())                            if (tt GetInterface( interface )!=null)                                    Webtest interface obj = (Webtest interface )Activator CreateInstance(a);                    //Console Write(obj add());                           

cha138/Article/program/net/201311/12496

相关参考

知识大全 C#反射取值 源代码

C#反射取值源代码  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  ///<summary&

知识大全 C#利用反射简化给类字段赋值

C#利用反射简化给类字段赋值  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  这个例子主要的思路是

知识大全 .NET简谈反射(动态调用)

.NET简谈反射(动态调用)  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  我们继续C#基础知识

人体奥秘 什么是反射?

  假如有物体朝我们的眼睛飞来,我们会不假思索地闭上眼睛,保护自己,这种行为就是反射。反射是神经调节的基本方式,在同一时间内,我们的身体进行着各种各样的反射活动。我们把这些反射分成非条件反射和条件反射

玻璃幕墙的光反射并不能造成光污染

玻璃幕墙的光反射并不能造成光污染。_____答案:错误解析:玻璃的反射是镜面反射,反射了大约80%到90%的光,大大超出了人眼承受范围。所以玻璃幕墙的光反射能造成光污染。故本题判断错误。

婴幼儿(宝宝)抓握反射说明什么?

反射是一种自动反应,是由某些特定刺激不自觉引起的一种行为。如:灰尘眯眼时会眨眼,就是一种反射。  反射在孩子(宝宝)发育中能帮助婴儿(宝宝)去适应新的环境,有时可以判断神经系统发育是否正常。抓握反射就

建筑照明设计中防止或减少光幕反射和反射眩光的方法?

1避免将灯具安装在干扰区内;  2采用低光泽度的表面装饰材料;  3限制灯具亮度;  4照亮顶棚和墙表面,但避免出现光斑。

建筑照明设计中防止或减少光幕反射和反射眩光的方法?

1避免将灯具安装在干扰区内;  2采用低光泽度的表面装饰材料;  3限制灯具亮度;  4照亮顶棚和墙表面,但避免出现光斑。

哪些因素易发生或加重眼心反射,在麻醉中如何处理眼心反射?

眼心反射在小儿作斜视手术时最易发生。在视网膜手术、眼球摘除术以及作球后神经阻滞时也有发生。非眼科手术如压迫眼球,同样可发生眼心反射。即使眼球已摘除,在眼眶内手术也偶可发生眼心反射,刺激愈强,愈易发生眼