【问题标题】:Fail to invoke class in dynamic loaded DLL from windows service无法从 Windows 服务调用动态加载的 DLL 中的类
【发布时间】:2012-12-19 07:34:01
【问题描述】:

这是我在 C# DLL 中的类

namespace MyNS
{
    public class MyClass
    {
        public static int Execute(string logKey, 
                                  string key, 
                                  XmlNode xmlPars)
        {
            return 0
        }
    }
}

我在运行时加载 DLL 并将 Class Type 加载到 _type 变量中。但是当我像这样从 Windows 服务调用函数 Execute 时:

counter = (int)_type.InvokeMember("Execute", 
                                  BindingFlags.Public |
                                  BindingFlags.InvokeMethod | 
                                  BindingFlags.Static, 
                                  null, 
                                  null, 
                                  new object[] { 
                                                  logKey, 
                                                  Key, 
                                                  _xmlParams 
                                                });

我得到“调用的目标已抛出异常。”
我在这里做错了什么?

【问题讨论】:

  • 在哪一行抛出异常?我尝试了一个类似的例子。你能发布你如何加载程序集和创建类型吗?

标签: c# windows-services runtime invokemember


【解决方案1】:

你是如何加载DLL的,你能分享一下动态加载dll的代码吗?

这是示例代码。

Assembly assembly = Assembly.LoadFrom("ABC.dll");
object o = Activator.CreateInstance(assembly.GetType("ClassName"));
/// then invoke the method

【讨论】:

  • 感谢您的回复。
    我加载DLL的方式与您的相同。一切正常,但我发现如果 DLL(我的插件)驻留在服务的不同目录中,并且 DLL 引用了其他 DLL。我必须将其他DLL复制到Windows服务目录而不是Plugin目录。
    现在问题解决了。
猜你喜欢
  • 1970-01-01
  • 2022-05-16
  • 2016-07-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-09-30
  • 1970-01-01
相关资源
最近更新 更多