ホームページ > バックエンド開発 > C#.Net チュートリアル > C# で DLL を動的にロードする

C# で DLL を動的にロードする

黄舟
リリース: 2017-02-18 10:52:34
オリジナル
1332 人が閲覧しました

1. 新しいテスト DLL とメソッドを作成し、vs2010 を使用して新しい winform プログラムを作成します。具体的なコードは次のとおりです:


using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace reflect
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        public string TestReflect()
        {
            MessageBox.Show("动态加载Dll测试");
            return "TestReflect返回值";
        }
    }
}
ログイン後にコピー

2. コードを動的にロードします


using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Reflection;

namespace reflectTest
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        private void button1_Click(object sender, EventArgs e)
        {
            //加载dll中的函数
            //Assembly asm = Assembly.Load(strDllPath);//加载当前根目录的dll
            Assembly asm = Assembly.LoadFile(@"F:\WorkSpace\VS测试代码\反射测试001\反射message方法\reflect\reflect\bin\Debug\reflect.dll");//根据dll文件实际路径加载
            //用类型的命名空间和类获得类型
            System.Type FromClass = asm.GetType("reflect.Form1");
            //需要实例化类型,才可以使用,参数可以人为的指定,也可以无参数,静态实例可以省略
            Object obj = System.Activator.CreateInstance(FromClass);
            //通过方法名称获得方法(调试走到下面这一步的时候,就可以弹出“动态加载Dll测试”这个消息了)
            MethodInfo method = FromClass.GetMethod("TestReflect");
            //获取TestReflect函数的返回值,在这里会获取到"TestReflect返回值",如果没有返回值,可以省略这一步
            object o = method.Invoke(obj, new object[] { });
        }
    }
}
ログイン後にコピー

ちょっとしたメモ:

メソッド名を使用してメソッドを取得します メソッドはパブリックである必要があります。

上記は C# で DLL を動的にロードする内容です。さらに関連する内容については、PHP 中国語 Web サイト (m.sbmmt.com) に注目してください。


関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート