【发布时间】:2017-07-20 12:05:27
【问题描述】:
我有一个带有“Apple”类的主应用程序和一个单独的 dll 项目,我想在其中创建一个新的“Apple”实例。两个项目(MainApplication 和 Dll-Project)都是独立的项目,但都在同一个解决方案中。背景是我想将一些类(在本例中为“DllClass”类)作为 dll。
主应用程序:
using AppLib;
namespace SpaceOne
{
public class Main
{
}
public class Apple
{
public Apple(DllClass someThing)
{
// Do some constructor stuff
}
}
}
DLL 项目:“AppLib”
using MainApplication;
namespace SpaceTwo
{
public class DllClass
{
Apple foo = new Apple(this); // <= Here occurs the fault
}
}
为什么会显示这个错误信息:
SpaceOne.Apple.Apple(DllClass)的最佳重载方法匹配 有一些无效的参数
如果我将 DllClass 复制到我的 MainApplication 并在那里尝试它就可以了。但我无法从我的 DLL 项目中创建新的 Apple 实例,尽管我已将 MainApplication 作为参考并通过“使用 MainApplication”导入。
如何从我的 DLL 项目创建新的 Apple 实例?
更新:这只是一个无法编译的代码示例,应该只是显示我的代码的粗略结构。
【问题讨论】:
-
该错误与您显示的代码不匹配。此外,您的代码(除了您提到的那一行)根本无法编译。请提供minimal reproducible example。
-
为什么你的类声明有
()这是造成问题的原因 -
要访问主项目的类,您的 dll 项目必须引用该主项目。但这当然似乎是错误的方向。通常,您的主项目会引用 dll 以使用 dll 提供的类。但就目前而言,您的代码还有其他问题:类声明中的
()以及在static上下文中使用this(字段初始化) -
在低级类库中实例化高级模块中定义的类的原因是什么?您应该将
Apple类移动到单独的类库项目,然后在AppLib中引用它。这种方法更可取 IMO。 -
我不知道这个例子会如何工作。在我看来,你有一个循环依赖。这将如何编译?