从DLL访问另一个项目中的类型(C#)

时间:2013-04-15 16:16:29

标签: c#

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

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

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

1 个答案:

答案 0 :(得分:1)

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

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

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

interface IFoo{
   int GetBar();
}

然后在Dll的代码中将其用作参数

void DoSomeStuff(IFoo foo);

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

class Foo:IFoo{...}

通过这种方式,您可以从DLL中在主应用程序中执行某些操作,而无需从DLL中引用该应用程序。