被反射类中:

  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 >= )
{
string filename = s[];
if (filename.IndexOf(':') < ) //不包括路径
{
if (AppDomain.CurrentDomain.SetupInformation.ApplicationBase.EndsWith(@"\"))
filename = AppDomain.CurrentDomain.SetupInformation.ApplicationBase + s[];
else
filename = AppDomain.CurrentDomain.SetupInformation.ApplicationBase + @"\" + s[];
}
if (File.Exists(filename))
{
Assembly asm = Assembly.LoadFrom(filename);
instance = asm.CreateInstance(s[]); }
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;
}

c# 反射事件的更多相关文章

  1. C# 关于反射事件

    在frmMain类中的代码 private void StartRun(string tag, string date, bool tipType)        {            var d ...

  2. JNI详解---从不懂到理解

    转载:https://blog.csdn.net/hui12581/article/details/44832651 Chap1:JNI完全手册... 3 Chap2:JNI-百度百科... 11 C ...

  3. Android 框架学习1:EventBus 3.0 的特点与如何使用

    前面总结了几篇基础,在这过程中看着别人分享自定义 View.架构或者源码分析,看起来比我写的"高大上"多了,内心也有点小波动. 但是自己的水平自己清楚,基础不扎实画再多源码流程图也 ...

  4. .NET基础拾遗(4)委托、事件、反射与特性

    Index : (1)类型语法.内存管理和垃圾回收基础 (2)面向对象的实现和异常的处理基础 (3)字符串.集合与流 (4)委托.事件.反射与特性 (5)多线程开发基础 (6)ADO.NET与数据库开 ...

  5. 通过反射绑定事件_Office Visio

    花了好几个小时才Try出来,记录一下: //反射获取Visio.Application,此处没有判断是否有安装Visio            mVisioType = System.Type.Get ...

  6. C# 调用一个按钮的Click事件(利用反射)

    最基本的调用方法 (1)button1.PerformClick();(2)button1_Click(null,null);(3)button_Click(null,new EventArgs()) ...

  7. 使用反射让Spinner选择同一选项时触发onItemSelected事件

    翻看源码,Spinner判断是否触发onItemSelected,是在它的基类AdapterView里面做的: void checkSelectionChanged() { if ((mSelecte ...

  8. java事件响应方法汇总(容器类监听、监听器类、AbstractAction、反射)

    Java图形用户界面中,处理事件时所必须的步骤是: 1.创建接受响应的组件(控件)2.实现相关事件监听接口3.注册事件源的动作监听器4.事件触发时的事件处理 相应的可以通过以下的集中方式来作出事件响应 ...

  9. Android自定义工具类获取按钮并绑定事件(利用暴力反射和注解)

    Android中为按钮绑定事件的有几种常见方式,你可以在布局文件中为按钮设置id,然后在MainActivity中通过findViewById方法获取按钮对象实例,再通过setOnClickListe ...

随机推荐

  1. pyquery的问题

    在使用pyquery时发现一些问题, 1.爬取的html中如果有较多的错误时,不能很好的补全. 2.如果要获取某个class中的内容时,如果内容太多不能取完整!只能取一部分. 这个在现在的最新版本中还 ...

  2. codevs2777 栅栏的木料

    题目描述 Description 农民John准备建一个栅栏来围住他的牧场.他已经确定了栅栏的形状,但是他在木料方面有些问题.当地的杂货储存商扔给John一些木板,而John必须从这些木板中找出尽可能 ...

  3. TypeError: test() got multiple values for keyword argument 'key'

    原因是: 1.函数调用的最终形式只会调用两个函数.一个list参数和一个dict参数,格式为call(func, list, dict); 2.如果传入参数中有key参数,那么首先key参数(包括扩展 ...

  4. C# FromBase64String 解码换行问题

    Base64是网络上最常见的用于传输8Bit字节代码的编码方式之一,大家可以查看RFC2045-RFC2049,上面有MIME的详细规范.Base64编码可用于在HTTP环境下传递较长的标识信息.例如 ...

  5. mingw32 捕获异常的4种方法

    ------------------------------------------------------------------------------- 1. 利用 windows 的API S ...

  6. Python~切片Slice

          [:] [:10] [-10:]       [':10:2]                                  

  7. .NET 接口

    接口      接口是一组抽象成员的集合,表示某个类或结构可以选择去实现的行为,描述的是可属于任何类或结构的一组相关功能.接口方法的实现是在实现接口的类中完成的,实现接口的类可以显式实现该接口的成员, ...

  8. node06-path

    目录:node01-创建服务器 node02-util node03-events node04-buffer node05-fs node06-path node07-http node08-exp ...

  9. 启动Tomcat报异常host-manager does not exist or is not a readable directory

    前几天重新安装了Tomcat6,安装完Tomcat6后在wepapps下面会有一些tomcat自带的项目(root.manager.host- manager等几个),这几天项目没什么用我就删掉了,后 ...

  10. bzoj3439 trie+可持久化线段树

    挺好想的 trie建树后,按dfn序建可持久化 注意:计数变量多的题目一定要注意检查会不会用的时候搞混了 #include <cstdio> #include <cstdlib> ...