每个人都有自己的知识体系。
Toggle navigation
Home
随笔
C#/.Net
树莓派 / Raspberry
皓月汉化组
Beego
Golang
OxideMod
apache
haproxy
windows
Java
Objective-C
日语/罗马音歌词/日语常识
MongoDB
python
电学
公告
Minecraft服务器-公告
NanoPi
C4D (CINEMA 4D)
生活
推流/m3u8/rtmp/rtsp
Unity3d
ffmpeg
数据结构
区块链
tarui
UnityForPSVita
About Me
Archives
Tags
C#等语言、反射机制实现简单 智能语音人机交互(2)-- 皓月
2017-06-06 17:26:48
201
0
0
akiragatsu
首先第一步 通过反射实现字符串调用程序集下的类 比如我们有一些功能类库、需要动态调用 如下: namespace Sin365AIProject_01 { public class B_Test1 { public void GetT1() { Console.WriteLine("T1方法调用成功"); } public void GetT2() { Console.WriteLine("T2方法调用成功"); } } } 那么我们先写一个方法做反射实现、 四个参数、 分别是 程序集名称、类的名称、要调用的方法名称、 以及 要调用的方法的参数集合 代码如下 /// <summary> /// /// </summary> /// <param name="AssemblyName"></param> /// <param name="ClassFullName"></param> /// <param name="Method"></param> static void RefMainSet(string AssemblyName, string ClassFullName, string MethodName, object[] parameters) { //指定程序集、类名 获取类 Type type = Assembly.Load(AssemblyName).GetType(ClassFullName); //需要调用的方法名 MethodInfo meth = type.GetMethod(MethodName); //判断是否是静态方法 if (!meth.IsStatic) //由于静态类和非静态类处理方式不同、 //所以分开封装 {//如果不是静态方法 RefMainSetUnStatic(meth, type, parameters); } else {//如果是静态方法 RefMainSetStatic(meth, type, parameters); } } /// <summary> /// 调用非静态方法的方法 /// </summary> /// <param name="meth"></param> /// <param name="type"></param> /// <param name="parameters"></param> static void RefMainSetUnStatic(MethodInfo meth, Type type, object[] parameters) { //调用非静态方法 object obj = Activator.CreateInstance(type); //调用参数 meth.Invoke(obj, parameters); } /// <summary> /// 调用静态方法静态的方法 /// </summary> /// <param name="meth"></param> /// <param name="type"></param> /// <param name="parameters"></param> static void RefMainSetStatic(MethodInfo meth, Type type, object[] parameters) { //调用参数 meth.Invoke(null, parameters); } 好的、我们来进行最终调用(请回看一眼上面、我们需要调用的类库和下面的方法) 比如我们要调用 程序集Sin365AIProject_01 下的 B_Test1类 下的GetT1方法。 那么调用方式、传入即可 如下: RefMainSet("Sin365AIProject_01", "Sin365AIProject_01.B_Test1", "GetT1", new object[] ())
Pre:
Go 笔记 - 1-10 多个变量或常量定义
Next:
C#等语言 反射机制实现简单 智能语音人机交互(1)-- 皓月
0
likes
201
Weibo
Wechat
Tencent Weibo
QQ Zone
RenRen
Submit
Sign in
to leave a comment.
No Leanote account?
Sign up now.
0
comments
More...
Table of content
No Leanote account? Sign up now.