C# - 在dll-project

时间:2017-07-20 12:05:27

标签: c# .net dll

我有一个带有“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实例?

更新:这只是一个不编译的代码示例,应该只显示我代码的粗略结构。

1 个答案:

答案 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?