博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
c# 反射事件
阅读量:5083 次
发布时间:2019-06-13

本文共 3178 字,大约阅读时间需要 10 分钟。

被反射类中:

  

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

 

 

///         /// 根据类名创建对象。        ///         ///         /// 
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; }

 

转载于:https://www.cnblogs.com/weihongli/p/3976748.html

你可能感兴趣的文章
(转)linux sort,uniq,cut,wc命令详解
查看>>
关于ExecuteNonQuery执行的返回值(SQL语句、存储过程)
查看>>
UVa540 Team Queue(队列queue)
查看>>
mysql数据增删改查
查看>>
shell中下载最新版本或指定版本的办法(Dockerfile 中通用)
查看>>
极客时间-左耳听风-程序员攻略-分布式架构工程设计
查看>>
akka之种子节点
查看>>
不知道做什么时
查看>>
matlab 给某一列乘上一个系数
查看>>
密码学笔记——培根密码
查看>>
Screening technology proved cost effective deal
查看>>
MAC 上升级python为最新版本
查看>>
创业老板不能犯的十种错误
查看>>
Animations介绍及实例
查看>>
判断请求是否为ajax请求
查看>>
【POJ2699】The Maximum Number of Strong Kings(网络流)
查看>>
spring boot配置跨域
查看>>
BZOJ 1996 合唱队(DP)
查看>>
进击吧!阶乘——大数乘法
查看>>
安卓学习资料推荐-25
查看>>