zoukankan      html  css  js  c++  java
  • C# 反射

    class Program
    {
    static void Main(string[] args)
    {
    //Console.WriteLine(Untity.Rollover(Console.ReadLine()));
    //Console.WriteLine(Untity.make('w', 5));
    //foreach (string s in Untity.GetStringArray(Console.ReadLine()))
    //{
    // Console.WriteLine(s);
    //}
    Assembly ass = Assembly.LoadFile(@"E:\360data\重要数据\我的文档\visual studio 2010\Projects\dll\lrbrary\bin\Debug\lrbrary.dll");//加载程序集

    Type type = ass.GetType("lrbrary.Untity");//命名空间.类 。实例化 命名空间和类的名字必须一起指定
    FieldInfo[] fields = type.GetFields();//获取字段
    PropertyInfo[] propertys = type.GetProperties();//获取属性
    MethodInfo[] methods = type.GetMethods();//获取方法
    foreach (MethodInfo method in methods)
    {
    Console.WriteLine("方法名称:" + method.Name);
    Console.WriteLine("参数个数:" + method.GetParameters().Length);
    foreach (ParameterInfo param in method.GetParameters())
    {
    Console.WriteLine(param.ParameterType + ":" + param.Name);
    }
    }
    object obj = ass.CreateInstance("lrbrary.untity", true);
    MethodInfo meth = methods[2];//调用方法
    Console.WriteLine(meth.Invoke(obj, new object[] { }));//我们想用的方法是一个静态方法,这时候Invoke的时候,对于第一个参数是无视的,也就是我们写什么都不会被调用,即使我们随便new了一个any这样的Object,当然这种写法是不推荐的。但是我们如果Invoke的时候用了类型不一致的实例来做为参数的话,将会导致一个运行时的错误。
    //Console.WriteLine(meth.Invoke(null, null));//调用无参数静态方法的例子,这时候两个参数我们都不需要指定,用null就可以了。
    Console.ReadKey();
    }
    }

  • 相关阅读:
    mybatis
    eclipse日志
    最大值与最小值问题
    常见的缓存算法设计策略
    常用垃圾回收算法
    Java中对象的三种状态
    Java中的内存泄漏问题
    单例模式
    约瑟夫环问题
    矩形覆盖问题
  • 原文地址:https://www.cnblogs.com/smailxiaobai/p/2250907.html
Copyright © 2011-2022 走看看