繁体   English   中英

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

[英]Namespace and class have the same name

我继承了一个大型C#项目。 其中一个类具有共享相同名称的名称空间和类。 结果,当创建类的实例时,我必须这样做:

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

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

有什么方法可以执行此操作而无需重命名现有代码?

您可以使用别名使其更具可读性(好吧,不要使用这些名称):

using AliasForName = existingName;

...

IinterfaceName dog = new AliasForName.existingName();

如果原始作者查看了此MSDN文章 ,那么他将首先使用其他名称:

X请勿对名称空间和该名称空间中的类型使用相同的名称 例如,请勿将Debug用作名称空间名称,然后在同一名称空间中提供一个名为Debug的类。 一些编译器要求此类类型是完全合格的。

顺便说一句,您应该真正应用大写约定

您可以通过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{}
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM