0

我希望将 DLL 加载到另一个项目中(Assembly.Load*() 等,在运行时)。如果有办法将主程序集中的类型(即类)包含到 DLL 中,那么我可以在方法调用中传递它们(嗯,对象),这对我来说会简单得多。

在 C++ 中,我可以只包含声明,但是(据我所知)在 C# 中没有办法做到这一点。我可能最终不得不将整个主程序“引用”到 DLL 中,但似乎必须有更好的方法。

(基本上 DLL 是运行时模块,需要来自主程序的信息来进行处理。但是主程序集也需要访问模块需要访问的相当多的东西。)

4

1 回答 1

1

看起来您有应用程序设计问题,导致循环引用 - 您的 dll 需要来自应用程序的类,而应用程序需要来自 dll 的类。

您应该尝试重构您的项目以避免这种情况。具体来说,DLL 中的代码不应直接访问主应用程序。

您可以在共享 DLL 中定义接口

interface IFoo{
   int GetBar();
}

然后在你的 Dll 代码中使用它作为参数

void DoSomeStuff(IFoo foo);

并在您的应用程序中创建一个实际的实现:

class Foo:IFoo{...}

这样,您就可以从 DLL 在主应用程序中执行某些操作,而无需从 DLL 引用应用程序。

于 2013-04-15T16:29:40.470 回答