【问题标题】:issue with loading .dll lib in C# code在 C# 代码中加载 .dll lib 的问题
【发布时间】:2014-11-18 05:10:50
【问题描述】:

我发现了一些关于通过代码将 .dll 库直接加载到 C# 项目中的帖子。这是我正在使用的当前代码:

            if (System.IO.File.Exists(dir + lib + ".dll"))
            {
                Assembly type = Assembly.LoadFrom(dir + lib + ".dll");
                object obj1 = type.CreateInstance(_namespace);



                assm.Add(obj1);
                return assm.Count - 1;
            }
            else
            {
                Console.WriteLine(dir + lib + ".dll: file does not exist");
                return -1;
            }

代码:

                Assembly type = Assembly.LoadFrom(dir + lib + ".dll");
                object obj1 = type.CreateInstance(_namespace);

假设找到 .dll 文件并将其作为实例加载,然后抓取该类并从中创建一个对象。所以我可以创建一个库,它有一个打印 hello 的函数,然后我将它加载到代码中,然后我可以通过创建类的实例来访问该函数。问题是当我做代码时:

                object obj1 = type.CreateInstance(_namespace);

obj1 为空,我知道将命名空间提供给函数(我仔细检查过并且是正确的),但无论如何它始终为空。我检查了库是否作为程序集加载,它是!以下是我执行断点时(将鼠标悬停在对象类型上)时的程序集详细信息:

    {ClassLibrary1, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null}

提前感谢您的帮助,我不确定我的代码有什么问题。

【问题讨论】:

  • 因此程序集似乎已正确加载。 _namespace 看起来如何,你的对象是如何声明的?
  • _namespace 只是一个字符串,其值为库的命名空间。库中的命名空间为:namespace ClassLibrary1,_namespace 为 ClassLibrary1。

标签: c# dll .net-assembly


【解决方案1】:

什么是_namespace?它必须包含类的全名(带有命名空间),例如System.Collections.ArrayList

【讨论】:

  • 是的,我忘了在最后加上命名空间的类,谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-04
  • 1970-01-01
相关资源
最近更新 更多