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();
    }
    }

  • 相关阅读:
    centos 挂载u盘
    如何将网站部署到tomcat根目录下
    seo工具
    mysql 1045 access denied for user********
    div 自适应宽度
    mysql 日志提示 is marked as crashed and should be repaired
    css overflow:hidden无效解决办法
    java 调用 .net webservice
    Java开发笔记(十五)短路逻辑运算的优势
    Java开发笔记(十四)几种运算符的优先级顺序
  • 原文地址:https://www.cnblogs.com/smailxiaobai/p/2250907.html
Copyright © 2011-2022 走看看