.NET - 具有相同名称空间的多个库 - 引用

时间:2011-01-21 14:09:18

标签: c# namespaces

今天我面临一个奇怪的挑战......

这个挑战涉及两个我需要从我的应用程序引用的.NET库。我无法控制其中的两个并且在其中具有相同的命名空间。

因此...

我的foo.dll包含位于Widget命名空间的Blue.Red.Orange类。

我的bar.dll也包含Widget类,该类也位于Blue.Red.Orange命名空间。

最后,我的应用程序需要引用foo.dllbar.dll。这需要在我的应用程序中,我需要使用Widget中的foo类以及Widget中的bar

所以,问题是如何管理这些引用,以便我可以确定我使用的是正确的Widget类?

如上所述,我无法控制foobar库,它们就是它们,无法更改。但我确实可以完全控制我的申请。

5 个答案:

答案 0 :(得分:42)

您需要使用C {2中引入的extern alias

Anson Horton有walkthrough on his blog你可能会觉得有用。

答案 1 :(得分:8)

答案 2 :(得分:1)

您可以使用“别名”属性来解决冲突。选择库并打开“属性”窗口。这已在此SO post

中讨论过

答案 3 :(得分:0)

哇,太狡猾了。我叮,我会创建两个包装DLL:

  1. MyBarWrapper.dll(其中包含对bar.dll的引用)
  2. MyFooWrapper.dll(引用foo.dll)
  3. 并在那里支持不同的命名空间。

答案 4 :(得分:-1)

如果你能做到这一点,我会感到惊讶,而不使用反射。

创建自己的FooWrapper和BarWrapper dll可能更容易,它们引用foo和bar并在不同的命名空间下再次公开它们的内容。