如何从同一解决方案中的其他项目的dll调用方法

时间:2015-01-03 21:10:19

标签: c#

我在Visual Studio解决方案中有两个不同的项目。我想使用其中一个作为我的程序的主要部分,因此引用了第二个项目,如:

我知道我可以在我的主项目中使用项目 x 中的所有公共类。我的问题是:我可以在第二个项目 x 上使用dll,并在我的第一个项目中使用这些dll的方法吗?

一个很好的例子是,如果每个月我都有一个新版本的dll并且我不想在解决方案资源管理器中的10个不同项目上更改此dll,我想将这些dll作为参考添加到< em> x 项目,然后是所有其他项目使用相同的dll。

2 个答案:

答案 0 :(得分:0)

通过引用这两个项目是不可能的,您将创建一个环形参考。

无论如何,这可以通过反思来做到这一点。例如,在项目x中,您可以枚举所有类型(Assembly.GetTypes左右),也可以枚举引用的项目。然后你可以创建一个类Activator.CreateInstance的实例并执行成员。

答案 1 :(得分:0)

如果您有2个项目:

  1. x.dll
  2. MyProgram.exe
  3. 使MyProgram.exe引用x.dll很好。但是,如果您希望x.dll也引用MyProgram.exe,则会创建循环引用。

    这是一条危险的道路,因为你只能在拥有另一个的二进制文件时构建任一项目。换句话说,你不能同时从源构建两者,因为引用尚未编译。

    高度建议不要这样做。而是考虑通过将代码x.dll从MyProgram.exe移动到单独的y.dll来进一步抽象代码。这样你就有3个项目:

    1. y.dll
    2. x.dll(引用y.dll)
    3. MyProgram.exe(引用x.dll和y.dll)
    4. 通过这种方式,您可以从源构建所有依赖项都是线性的。