【问题标题】:C# External DLLC# 外部 DLL
【发布时间】:2016-05-19 15:15:48
【问题描述】:

我在 C# 中创建了一个外部 DDL 以在另一个项目中使用。 在其中一个 DLL 函数中,我有以下代码行:

Assembly assembly = typeof(Base).Assembly;
Type type = assembly.GetType(NameSpace + "." + ObjectType);

其中“Base”是一个虚拟类(在 DLL 中定义),“ObjectType”(类型字符串)是其他项目中任何类的类名,“NameSpace”(类型字符串)是其他项目的命名空间也是。 当我尝试在传递“NameSpace”和“ObjectType”参数时调用 DLL 函数时,我将 Type(即类型)设为 null。

我的想法是创建一个 DLL 并在所有项目中使用,而不是每次创建新项目时都复制文件。

非常感谢任何帮助或建议。

【问题讨论】:

  • "我的想法是创建一个 DLL 并在所有项目中使用,而不是每次创建新项目时都复制文件。"因此,只需 reference 来自其他项目的 DLL。如果您可以在编译时引用 DLL,则不需要通过反射加载类型。它会让你的生活更加更加艰难。
  • 我们需要更多信息才能回答这个问题...指出对象类型的声明方式,以及您为 NameSpace 和 ObjectType 传递的内容。
  • @Sinatr 使用Type.GetType 时确实如此。 Assembly.GetType 不需要指定的程序集(因为您正在调用已经知道该详细信息的 Assembly 实例。
  • 要对此进行调试,请查看调试器中NamespaceObjectType 的值,并查看调试器中程序集中可用的类型(查看assembly.GetTypes())。跨度>
  • @Sinatr 没问题 - 只是不想让 OP 朝着错误的方向前进 :)

标签: c# dll namespaces .net-assembly


【解决方案1】:

程序集是否包含引用的类型?如果没有,您是手动加载的吗?

System.Reflection.Assembly.LoadFrom("filepath")

在此之后,该类型应该能够解析。

【讨论】:

  • 答案通常没有那么多问号。请不要猜测,请使用评论要求 OP 澄清。
猜你喜欢
  • 1970-01-01
  • 2015-11-28
  • 2012-08-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-07-25
  • 1970-01-01
  • 2023-04-04
相关资源
最近更新 更多