当两个引用的程序集都定义类型A.A1时遇到问题

flo*_*ode 3 c# assemblies namespaces

如果两个程序集都定义namespace A包含class A1,则这两个类被视为唯一类型.

a)两个名称空间是否也被认为是唯一的?

b)如果program P有两个程序集的引用,我们如何创建这两种类型的实例?也就是说,当我尝试创建一个实例时,我不断收到错误A.A1

using A;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            A1 a = new A1(); // error
        }
  }
}
Run Code Online (Sandbox Code Playgroud)

c)但是如果program P还定义了type B.A1,那么当我声明一个实例时,编译器不会抱怨A1:

using A;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            A1 a = new A1(); // ok
        }
    }

    class A1 { }
}
Run Code Online (Sandbox Code Playgroud)

不应该编译抱怨,因为它无法知道使用哪个版本A1(A.A1来自其中一个引用的程序集或B.A1)?

感谢名单

Hen*_*man 5

您可以使用extern alias指令解决此问题.

这是一个更好的解释.