使用反射从c# Dll调用c#方法

本文关键字:Dll 方法 调用 反射 | 更新日期: 2023-09-27 18:18:41

大家好!我有以下问题。我正在c#中处理我的.dll库,我需要从dll库中调用另一个c#项目的方法。例如,我创建了一个WPF项目,并添加了我的。dll库的引用。

这是我的WPF类(项目):
using dllLibrary;
namespace Tester
{
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
        }
        public void MyMethod()
        {
            MessageBox.Show("Test");
        }
    }
}

这是我的。dll项目:

Type type = Type.GetType("Tester.MainWindow");
object instance = Activator.CreateInstance(type, null);
MethodInfo method = type.GetMethod("MyMethod");
return method.Invoke(instance, null);
顺便说一下,当我在程序集中调用一个方法时,它会起作用(dll项目的),但是当我想调用dll项目之外的方法(Tester. dll)。

使用反射从c# Dll调用c#方法

类型。不带完整限定名的GetType只适用于mscorlib.dll中的类型。对于所有其他类型,必须传递类型的完整限定名。所以当你把GetType调用改成这样它就能工作了:

Type.GetType("Tester.MainWindow, TestAssembly, Version=1.0.0.0, Culture=neutral, PublicKeyToken=b17a5c561934e089);

可以先使用assembly加载程序集。