我在C#项目中遇到了难题。我想从解决方案之外的另一个dll导入和调用方法。我在加载器中通过加载dll,遍历方法并将它们添加到列表(“命令”)中来做到这一点
加载程序:
namespace LoaderNamespace{
public void Import(string Path)
{
try
{
Assembly assembly = Assembly.LoadFrom(Path);
Type type = assembly.GetType(Path);
object instance = Activator.CreateInstance(type); //creates an instance of that class
MethodInfo[] methods = type.GetMethods(BindingFlags.Public | BindingFlags.Instance);
foreach (MethodInfo method in methods)
{
ParameterInfo[] parameterInfo = method.GetParameters();
if (parameterInfo.Length == 2)
{
Command delegatey = method.CreateDelegate(typeof(Command)) as Command;
Commands.Add(method.Name, delegatey);
}
}
}
catch (Exception)
{
OutputError(line, "Error while importing dll.");
}
}
}
dll:
namespace Commands
{
public class Commands
{
public void Test()
{
LoaderNamespace.OutputText("Just coming along to tell you that your code is working!!");
}
}
}
命令基本上是通过调用执行的。
问题:
“ LoaderNamespace”具有一个称为OutputText的方法。
public void OutputText(string Text)
{
if (Text != null && outputAction != null)
{
outputAction(Text);
}
}
我希望能够从我的dll进行调用。我还想访问“ LoaderNamespace”中的其他变量。简而言之,我想访问从Test()本身调用Test()的实例,以便可以更改变量等。
(这些代码段中的任何内容都可以根据需要更改)
非常感谢!