繁体   English   中英

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

[英]Call C# Method from C# Dll using 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项目)之外调用方法时,它不起作用。

Type.GetType不包含全限定名,包括 程序集仅适用于mscorlib.dll中的类型。 对于所有其他类型,您必须传递该类型的完整限定名称。 因此,当您将GetType调用更改为如下所示时,它将起作用:

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM