我有一个带有“Apple”类的主应用程序和一个单独的dll项目,我想创建一个新的“Apple”实例。两个项目(MainApplication和Dll-Project)都是单独的项目,但两者都在同一个解决方案中。背景是我希望将一些类(在本例中为“DllClass”类)作为dll。
MainApplication:
using AppLib;
namespace SpaceOne
{
public class Main
{
}
public class Apple
{
public Apple(DllClass someThing)
{
// Do some constructor stuff
}
}
}
DLL-Project:“AppLib”
using MainApplication;
namespace SpaceTwo
{
public class DllClass
{
Apple foo = new Apple(this); // <= Here occurs the fault
}
}
为什么会显示此错误消息:
SpaceOne.Apple.Apple(DllClass)的最佳重载方法匹配 有一些无效的论点
如果我将DllClass复制到我的MainApplication并在那里尝试它就可以了。但我无法从我的DLL-Project创建一个新的Apple实例,尽管我已经将MainApplication作为参考并通过'使用MainApplication'导入。
如何从我的DLL-Project创建一个新的Apple实例?
更新:这只是一个不编译的代码示例,应该只显示我代码的粗略结构。
答案 0 :(得分:1)
如何从我的DLL-Project创建一个新的Apple实例?
你不能,主应用程序中的Apple使用DLL-Project - DllClass中的类。因此,编译主应用程序必须具有对DLL-Project的引用。
DLL-Project正在使用主应用程序中的Apple。所以DLL-Project必须引用主应用程序。
但是这不会编译,你有一个循环依赖。要编译主应用程序,您需要一个已编译的DLL-Project,但要编译DLL-Project,您需要一个已编译的主应用程序,但在编译DLL-Project之前无法编译Main Applicaiton .....依赖性。
为什么不将Apple移入DLL-Project?