zoukankan      html  css  js  c++  java
  • C# 反射总结 获取 命名空间 类名 方法名

    一、获取 命名空间 类名 方法名

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Diagnostics;
    using System.Reflection;
    
    namespace GetMethodNameSpace
    {
        class Program
        {
            public static string GetMethodInfo()
            {
                string str = "";
                //取得当前方法命名空间
                str += "命名空间名:" + System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Namespace + "
    ";
                //取得当前方法类全名
                str += "类名:" + System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.FullName + "
    ";
                //取得当前方法名
                str += "方法名:" + System.Reflection.MethodBase.GetCurrentMethod().Name + "
    ";
                str += "
    ";
    
                StackTrace ss = new StackTrace(true);
                MethodBase mb = ss.GetFrame(1).GetMethod();
                //取得父方法命名空间
                str += mb.DeclaringType.Namespace + "
    ";
                //取得父方法类名
                str += mb.DeclaringType.Name + "
    ";
                //取得父方法类全名
                str += mb.DeclaringType.FullName + "
    ";
                //取得父方法名
                str += mb.Name + "
    ";
                return str;
            }
    
            public static void Main()
            {
                Console.WriteLine(GetMethodInfo());
    
                Console.ReadKey();
            }
        }
    }

     二、利用反射动态加载dll

    头部引用加:

    using System.Reflection;
    Assembly asm = Assembly.LoadFrom(AppDomain.CurrentDomain.BaseDirectory+ "/DeclareDLL/YunDouTaxLib.dll");////我们要调用的dll文件路径
    //加载dll后,需要使用dll中某类.
    Type t = asm.GetType("namespace.classname");//获取类名,必须 命名空间+类名  
    
     //实例化类型
    object o = Activator.CreateInstance(t);
    
    //得到要调用的某类型的方法
    MethodInfo method = t.GetMethod("functionname");//functionname:方法名字
    
    object[] obj =
    {
         Parameters[0].TaxpayerName,
         Parameters[0].TaxpayerTaxCode,
         Parameters[0].CAPassword
    };
    //对方法进行调用
    var keyData = method.Invoke(o, obj);//param为方法参数object数组

    三,没有Assembly.LoadFrom 需要在程序中加引用

  • 相关阅读:
    BZOJ3578:GTY的人类基因组计划2(集合hash,STL)
    【BZOJ 1022】 [SHOI2008]小约翰的游戏John
    【BZOJ 1295】 [SCOI2009]最长距离
    【BZOJ 1103】 [POI2007]大都市meg
    【BZOJ 3172】 [Tjoi2013]单词
    【BZOJ 1067】 [SCOI2007]降雨量
    【BZOJ 1491】 [NOI2007]社交网络
    【BZOJ 1087】[SCOI2005]互不侵犯King
    【BZOJ 1009】 [HNOI2008]GT考试
    【BZOJ 1053】[HAOI2007]反素数ant
  • 原文地址:https://www.cnblogs.com/xdot/p/8651506.html
Copyright © 2011-2022 走看看