Use types of same name & namespace in 2 .NET assemblies

[亡魂溺海] 提交于 2019-12-18 07:43:23

问题


Out of curiosity, I've created 2 assemblies which both have a class (Class1) with the exact same namespace (Library1). I then create another client referencing those 2 assemblies and try to create an instance of Class1.

The compiler, not surprisingly, gives me a compile-error about the ambiguous reference. Is there any way to explicitly specify the type in the assembly I want to use to avoid the ambiguity?

Note: I know this rarely, if ever at all, happens in practice. It's just a question out of curiosity about language feature.


回答1:


I think you should use an extern alias to wrap the assembly namespaces outside of the Global namespace. Here's how:

  1. In the project that references the 2 assemblies, select one of them under References, and in the Properties window change the Aliases value from global to, say, global, Library1a.

  2. Do the same for the the other reference, but give it a different alias-- let's go with global, Library1b for our example.

  3. Insert extern alias Library1a; and/or extern alias Library1b; as the first 2 lines of any classes that consume the assemblies.

  4. When accessing ambiguous members, qualify the namespace with Library1a. or Library1b.. Examples: Library1a.Library1.Class1... Library1b.Library1.Class1...




回答2:


It happens in practice and is a real pain, the external alias can't always solve the problem. Here's one example of where it's an issue Duplicate Namepsaces.



来源:https://stackoverflow.com/questions/1067550/use-types-of-same-name-namespace-in-2-net-assemblies

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!