首页 > 解决方案 > C#:具有相同命名空间的引用程序集

问题描述

这不是重复的 它不适用于别名

如何引用具有相同命名空间的程序集?

这是 DLL1:

namespace ClassLibrary1
{
    public class Class1
    {
        public void Test()
        {
            Console.WriteLine("Test 1");
        }
    }
}

这是引用 DLL1 的 DLL2:

namespace ClassLibrary1
{
    public class Class1
    {
        public void Test()
        {
            new ClassLibrary1.Class1().Test(); //Should call Test() in DLL1
            Console.WriteLine("Test 2");
        }
    }
}

显然这不会按预期工作。我已经尝试为引用设置不同的别名(DLL2 -> DLL1)。无论我做什么,Visual Studio 似乎都忽略了别名。

它不适用于别名

myAlias::ClassLibrary1.Class1()不工作Visual Studio(编译器)忽略别名。如果我构建并启动我的解决方案,我会得到一个无限循环。

标签: c#

解决方案


您需要在引用类型时明确指定别名,例如new myAlias::ClassLibrary1.Class1(). 为了方便起见,您还可以使用using别名来执行类似的操作。using AnotherClass1 = myAlias::ClassLibrary1.Class1;

当然,如果可能的话,您首先要避免出现这个问题。如果您可以控制任一程序集,请选择命名空间和类型名称以避免冲突。


推荐阅读