zoukankan      html  css  js  c++  java
  • 利用反射调用类及其属性和方法


            /// <summary> 从DLL获取对象
            /// </summary>
            /// <param name="PControl"></param>
            /// <param name="dllPath"></param>
            /// <param name="NameSpacePath"></param>
            /// <param name="className"></param>
            public object LoadObjectByDll(string dllPath, string NameSpacePath, string className,bool isExePreLoad)
            {
                try
                {
                    //加载控件        
                    System.Reflection.Assembly assembly = System.Reflection.Assembly.LoadFrom(dllPath);
                    //获得类(型)        
                    Type type = assembly.GetType(String.Format("{0}.{1}", NameSpacePath, className), false, true);
                    //设置筛选标志        
                    System.Reflection.BindingFlags bflags = System.Reflection.BindingFlags.DeclaredOnly | System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance;
                    //调用构造函数并获得对象        
                    Object obj = type.InvokeMember(className, bflags | System.Reflection.BindingFlags.CreateInstance, null, null, null);
                    //if (isExePreLoad)
                    //{
                    //    object obj2;
                    //    PropertyInfo info = type.GetProperty("isPreLoad");
                    //    obj2 = info.GetValue(obj,null);
                    //    //obj2 = type.InvokeMember("isPreLoad", BindingFlags.GetProperty | BindingFlags.Public, null, (IPlugin)obj, null);
                    //    if (obj2.ToString().ToLower() == "true")
                    //    {
                    //        MethodInfo mi = type.GetMethod("PreLoad");
                    //        mi.Invoke(obj, null);
                    //    }
                    //}
                    return obj;
                }
                catch (Exception ex)
                {
                    throw ex;
                    //MessageBox.Show("加载插件失败!请验证插件的正确性...", "错误");
                }
            }
  • 相关阅读:
    vue 中 过滤filter 和 foreach的使用
    vuex 获取数据
    动态设置样式 calc计算
    vue-echarts-v3 使用 dataZoom属性 相关笔记
    访存加速-Speed-up of Memory Access Intensive Program
    台式机新添内存条无法开机?
    ADB的版本问题
    1184. Distance Between Bus Stops
    485. Max Consecutive Ones
    448. Find All Numbers Disappeared in an Array
  • 原文地址:https://www.cnblogs.com/gghxh/p/1223168.html
Copyright © 2011-2022 走看看