在C#中使用两个具有相同名称的静态类

时间:2012-02-15 06:25:09

标签: c# dll static-classes

我有一个我已经包含在我的C#项目中的DLL。我们称之为“one.dll” 此DLL包含名为“staticclass”的静态类

我有另一个DLL,我也包含在同一个项目中。我们称之为“two.dll” 此DLL还包含名为“staticclass”的静态类

现在当我在我的项目中同时包含两个DLL并尝试访问“staticclass”时,自然它会给出错误。有没有办法我可以更改类的名称或给它一些别名,所以让我们说“one.dll”中的“staticclass”将保持原样,我可以给“staticclassTwo”别名,这是“两个” .DLL“

请注意我无权访问“one.dll”和“two.dll”

的源编解码器

2 个答案:

答案 0 :(得分:8)

(我假设这两个类也在同一个命名空间中。如果它们不是,那很容易 - 只需使用简单的using指令作为别名,或者在代码中使用完全限定的名称。)< / p>

你确实可以给别名 - extern alias。实际上,这会将“程序集”添加为命名空间区分的另一个级别。

显然你应该尽可能避免这种情况,但是当你绝对需要时,C#提供了一种非常明确的方式。

Anson Horton在实践中如何使用它们good walkthrough

答案 1 :(得分:0)

您只需使用 Alias 即可。

在您的代码中,位于命名空间行的下方; 使用下面给出的别名

namespace ConsoleApp
{

    using ClassOne = Assembly.One.MyClass; /* your dll 1 class */
    using ClassTwo = Assembly.Two.MyClass; /* your dll 2 class */

    class Program
    {

        static void Main(string[] args)
        {

            ClassOne one = new ClassOne();
            // Do your stuff with ClassOne object

            ClassTwo two = new ClassTwo();
            // Do your stuff with ClassTwo object

        }
    }
}

希望这有帮助!