从文件夹加载DLL,C#windows表单项目

时间:2012-01-18 23:29:43

标签: c# winforms dll

我已经看到这是在另一个项目中完成的,该项目也使用了Windows窗体,我只是对如何完成它感到好奇。 基本上我要求的例子是:我有两个Windows窗体项目,目前两个都是分开但我想将它们合并到彼此中。这方面的一个重要方面是如何将第二个项目加载到第一个项目中。所以我把我的借调项目建成了.dll文件。 然后我想将.dll文件放在项目内的一个文件夹中,然后能够搜索文件夹中的任何.dll并加载它们。

所以我知道我可以通过将我的第二个项目中的.dll文件添加到第一个项目的引用中来实现这一点,但我特别想知道是否可以在没有这个的情况下完成它? 所以在我的第一个项目中,我可以说; “搜索”DirectoryName“,如果该文件夹中有任何.dll文件,请加载它们,并将它们添加到用户即我可以看到并希望使用的项目列表中。”

3 个答案:

答案 0 :(得分:4)

使用名为Reflection

的机制可以实现您的目标

Reflection允许您将程序集动态加载到应用程序中,等等。

您需要的类名为 Assembly ,它有几种有用的加载程序集的方法:

LoadFile,LoadFrom等等。

以下是在给定的路径上加载程序集的代码示例:

string path = @"D:\Folder\MyDll.dll";
Assembly assembly = Assembly.LoadFrom(path);

加载程序集并引用Assembly对象后,可以创建在其中定义的对象,调用其方法等。

可在此处找到更多资源:Dynamically loading and using Types

答案 1 :(得分:1)

您可能有兴趣使用Managed Entity Framework来实现这一目标。

或者,您可以将Assembly.LoadFrom()用作described here

答案 2 :(得分:0)

以下是一些有用的链接。

问SO:herehere 外部博客example

基本上,您需要加载库,枚举类型并使用Activator.CreateInstance()来创建新对象。 拥有需要与之交互的类的接口也可以帮助您