命名空间和类具有相同的名称

时间:2017-12-01 11:04:14

标签: c# class namespaces

我继承了一个大型的c#项目。其中一个类具有名称空间和类,它们具有相同的名称。因此,在创建类的实例时,我必须这样做:

using xxx.existingName
IinterfaceName dog = new existingName.existingName();

由于现有类具有接口,因此我可以避免在existingName.existingName左侧使用=。使用var dog也会这样做。但是我也想避免在右侧使用existingName.existingName,因为它的可读性较差。

如果不重命名现有代码,有没有办法做到这一点?

2 个答案:

答案 0 :(得分:1)

您可以使用alias来提高可读性(嗯,不是这些名称):

using AliasForName = existingName;

...

IinterfaceName dog = new AliasForName.existingName();

如果原作者看过this MSDN article,他首先会使用不同的名字:

  

X请勿对名称空间和类型使用相同的名称   命名空间。例如,不要使用Debug作为命名空间名称   还在同一名称空间中提供名为Debug的类。一些   编译器要求这些类型完全合格。

顺便说一句,你应该真正应用capitaliation conventions

答案 1 :(得分:1)

您可以通过using指令重命名类或命名空间:

using ClassAlias = Test.Test;
using NamespaceAlias = Test;

public class Program
{
    public static void Main()
    {
        ClassAlias a = new ClassAlias();
        NamespaceAlias.Test t = new NamespaceAlias.Test();
    }
}

namespace Test{
    public class Test{}
}