使用反射从 C# Dll 调用 C# 方法
Call C# Method from C# Dll using Reflection
美好的一天,
我有以下问题。我正在使用 C# 处理我的 .dll 库,我需要从 dll 库中调用另一个 C# 项目的方法。
例如,我创建了一个 WPF 项目并添加了我的 .dll 库的引用。
这是我的 WPF class(项目):
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 加载程序集以获得完整的限定名称。
美好的一天, 我有以下问题。我正在使用 C# 处理我的 .dll 库,我需要从 dll 库中调用另一个 C# 项目的方法。 例如,我创建了一个 WPF 项目并添加了我的 .dll 库的引用。
这是我的 WPF class(项目):
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 加载程序集以获得完整的限定名称。