我有一个 winform 应用程序和一个服务 DLL (C#),它们都在同一个解决方案和命名空间中。我正在动态加载 DLL,以便将来可以更新 DLL。主窗体从动态加载的 DLL 中调用一个方法,并将 self( this
) 作为变量传递。
主窗体中的代码:
namespace MyNamespace
{
class Form1
{
int i = 5;
// Code
.....
private void CallDllMethod()
{
try
{
Assembly assembly = Assembly.LoadFrom("DllName.dll");
Type type = assembly.GetType("MyNamespace.Class2");
object ClassObj = Activator.CreateInstance(type);
type.InvokeMember("DoSomething",
BindingFlags.Default | BindingFlags.InvokeMethod,
null,
ClassObj,
new object[] { this });
}
catch (Exception){...}
}
}
}
DLL中的代码:
namespace MyNamespace
{
public class Class2
{
public void DoSomething(Form1 obj)
{
...
}
}
}
它告诉我它不知道Form1 obj
,我想我明白为什么。
我怎样才能让 dll “知道” 主窗体,以便它可以与它的成员和方法交互?有没有更好的方法来实现这个目标?
谢谢