zoukankan      html  css  js  c++  java
  • c# 反射事件

    被反射类中:

      

      public delegate void CompeletedHandler();
    
    
            public static event CompeletedHandler AnalysisCompeleted;
    
    
     static void BasePath_AnalysisCompeleted()
            {
                if (AnalysisCompeleted != null)
                    AnalysisCompeleted();
            }

    反射时用的类中:

    namespace notam
    
    {   
    
      public partial class Form1 : Form   
    
      {      
    
       public Form1()       
    
      {         
    
        InitializeComponent();   
    
          }
    
             
    
      public static void SS()     
    
        {         
    
        //return null;      
    
       }     
    
    }
    
    }
            public static object InvokeClassMethod(string className,string methodName,object[] parameters,Type type)
            {
                object objClass =Cores.ClassBuilder.CreateObject(className);
                Type tt = objClass.GetType();
                System.Reflection.MethodInfo mi = tt.GetMethod(methodName);
                System.Reflection.EventInfo ee = tt.GetEvent("AnalysisCompeleted");
                ee.AddEventHandler(objClass, Delegate.CreateDelegate(ee.EventHandlerType,type, "SS"));
                parameters = new object[] { parameters };
                return mi.Invoke(objClass, parameters);
            }
    
        /// <summary>
            /// 根据类名创建对象。
            /// </summary>
            /// <param name="className"></param>
            /// <returns></returns>
            public static object CreateObject(string className)
            {
                object instance = null;
    
                string[] s = className.Split(',');
                if (s.Length >= 2)
                {
                    string filename = s[1];
                    if (filename.IndexOf(':') < 0)   //不包括路径
                    {
                        if (AppDomain.CurrentDomain.SetupInformation.ApplicationBase.EndsWith(@""))
                            filename = AppDomain.CurrentDomain.SetupInformation.ApplicationBase + s[1];
                        else
                            filename = AppDomain.CurrentDomain.SetupInformation.ApplicationBase + @"" + s[1];
                    }
                    if (File.Exists(filename))
                    {
                        Assembly asm = Assembly.LoadFrom(filename);
                        instance = asm.CreateInstance(s[0]);
    
                    }
                    else
                    {
                        throw new InvalidDataException("配置文件中,FBFactory配置不正确,找不到动态库文件:" + filename + "");
                    }
                }
                else
                {
                    //instance = Assembly.GetExecutingAssembly().CreateInstance(className);
                    instance = Assembly.LoadFrom(className).CreateInstance("FineMap.FinemapMain");
                    if (instance == null)
                    {
                        instance = Assembly.GetCallingAssembly().CreateInstance(className);
                    }
                    if (instance == null)
                    {
                        IEnumerator ie = AppDomain.CurrentDomain.GetAssemblies().GetEnumerator();
                        while (ie.MoveNext())
                        {
                            Assembly ab = ie.Current as Assembly;
                            if (ab != null)
                            {
                                instance = ab.CreateInstance(className);
                                if (instance != null)
                                    break;
                            }
                        }
                    }
                }
    
                return instance;
            }
  • 相关阅读:
    Python 学习笔记 -- 列表的基本使用
    帮助你构建云服务的开源平台:openstack
    一个基于Asterisk构建的VOIP应用软件:Elastix介绍
    Asterisk项目概述
    Asterisk 代码架构概述
    云计算投入成本分析
    撕去服务器虚拟化和云计算的神秘面纱
    VOIP开源项目源码地址
    websocket技术
    JSP页面静态化总结之一使用URLRewrite实现url地址伪静态化
  • 原文地址:https://www.cnblogs.com/weihongli/p/3976748.html
Copyright © 2011-2022 走看看