zoukankan      html  css  js  c++  java
  • C# 动态调用委托的DLL

    被调用的TestDll.dll文件主要代码:

    using System;
    using System.Collections.Generic;
    using System.Text;
    namespace TestDll
    {
        public class TestDll
        {
            public string HandleStr(string str)
            {
                return "["+str + "]";
            }
        }
    }

     

    调用 TestDll.dll的HandleStr方法的代码:

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Text;
    using System.Windows.Forms;
    using System.Reflection;
     
    namespace DynamicInvokeDll
    {
        public partial class FrmMain : Form
        {
            public FrmMain()
            {
                InitializeComponent();
            }
     
            private void FrmMain_Load(object sender, EventArgs e)
            {
                object[] obj = new object[1];
                obj[0] = "DllInvoke";
                object o2 = DllInvoke("TestDll.dll", "TestDll", "TestDll", "HandleStr", obj);
                MessageBox.Show(o2.ToString());
            }
     
            /// <summary>
            /// 动态调用DLL
            /// </summary>
            /// <param name="DllFileName">dll名称</param>
            /// <param name="NameSpace">命名空间</param>
            /// <param name="ClassName">类名</param>
            /// <param name="MethodName">方法名</param>
            /// <param name="ObjArrayParams">参数数组</param>
            /// <returns></returns>
            private object DllInvoke(string DllFileName, string NameSpace, string ClassName, string MethodName, object[] ObjArrayParams)
            {
                try
                {
                    //载入程序集 
                    Assembly DllAssembly = Assembly.LoadFrom(DllFileName);
                    Type[] DllTypes = DllAssembly.GetTypes();
                    foreach (Type DllType in DllTypes)
                    {
                        //查找要调用的命 名空间及类 
                        if (DllType.Namespace == NameSpace && DllType.Name == ClassName)
                        {
                            //查找要调用的方 法并进行调用 
                            MethodInfo MyMethod = DllType.GetMethod(MethodName);
     
                            if (MyMethod != null)
                            {
                                object mObject = Activator.CreateInstance(DllType);
                                return MyMethod.Invoke(mObject, ObjArrayParams);
                            }
                        }
                    }
                }
                catch (Exception mEx)
                {
     
                }
                return (object)0;
            }
        }
     
    }

     

  • 相关阅读:
    高内聚,低偶合
    Infinite Scrolling in UIScrollView
    ios5开发UITableView开启编辑功能
    一种自动的将自定义类序列化为JSON的方法
    Beini Compatible Hardware List
    BizTalk开发小工具批量更新发送端口订阅配置参数
    IOS5开发http get/post调用mvc4 webapi互操作(图片上传)
    IOS5开发控件位置适应屏幕旋转代码
    打开WHRHPG54AP的HP(High Power)功能
    xcode uiscrollview with paging and zoom
  • 原文地址:https://www.cnblogs.com/yinzhou/p/7690950.html
Copyright © 2011-2022 走看看