使用Reflection从C#Dll调用C#方法

时间:2015-10-21 07:58:43

标签: c# dll reflection

美好的一天, 我有以下问题。我正在使用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.MainWindow - WPF项目)时,它不起作用。

1 个答案:

答案 0 :(得分:2)

Type.GetType没有完整的限定名称incl。程序集仅适用于mscorlib.dll中的类型。对于所有其他类型,您必须传递该类型的完整限定名称。因此,当您将GetType调用更改为类似的内容时,它将起作用:

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

您可以先使用Assembly.LoadFile加载程序集,以获取完整的限定名称。